1. Operator wielokrotnego wyboru −switch
Java ma jeszcze jeden interesujący operator odziedziczony po swojej babci (język C++). To jest operator switch
. Jest również nazywany operatorem wielokrotnego wyboru. Wygląda trochę nieporęcznie:
switch(wyrażenie)
{
case oznaczający1: kod1;
case oznaczający2: kod2;
case oznaczający3: kod3;
}
Wyrażenie lub zmienna jest wskazana w nawiasach. Jeśli wartość wyrażeń jest równa wartość1
, rozpoczyna się wykonywanie kod1
, jeśli jest równa wartość2
, rozpoczyna się wykonywanie kod2
, jeśli jest równa wartość3
, rozpoczyna się wykonywanie kod3
.
Przykład:
Kod | Wyjście na wyświetlaczu |
---|---|
|
|
2. Operator break
wswitch
Ważną cechą pracy switch
jest to, że program po prostu przeskakuje do żądanej linii (do żądanego bloku kodu), a następnie wykonuje wszystkie bloki kodu do końca switch
. Nie tylko blok kodu pasujący do wartości wewnątrz switch
, ale wszystkie bloki kodu do końca switch
.
Przykład:
Kod | Wyjście na wyświetlaczu |
---|---|
|
|
Przy wartości temperatury 36 program przejdzie switch
do pierwszego bloku kodu - pierwszej linii, a po jego wykonaniu reszta bloków kodu zostanie po prostu wykonana.
Jeśli chcesz , aby w każdym przypadku wykonywany był tylko jeden blok kodu , do którego przeskoczyło wykonanie programu, musisz napisać instrukcję po tym bloku kodu break
;
Przykład:
Kod | Wyjście na wyświetlaczu |
---|---|
|
|
switch
Nie możesz pisać w ostatniej opcji break
, w każdym razie blok kodu jest tam ostatni.
3. Akcja domyślna:default
Kolejny ważny punkt. A co się stanie, jeśli żadna z proponowanych wartości w środku switch
nie pasuje do wartości wyrażenia w nawiasach?
Jeśli nie zostanie znaleziony odpowiedni wariant, praca operatora switch
zostanie zakończona, a program będzie kontynuował wykonywanie kodu zapisanego po nawiasach klamrowych operatora switch
.
Jednak switch
możliwe jest, aby zachowanie było podobne do gałęzi else z if-else
. Aby to zrobić, musisz użyć słowa kluczowego default
.
Jeśli żadna case
opcja wewnątrz nie switch
pasuje do wartości wyrażenia i jest switch
zadeklarowana w default
, jej kod zostanie wykonany. Przykład:
Kod | Wyjście na wyświetlaczu |
---|---|
|
|
4. Porównanie switch
vs.if-else
Operator switch
jest nieco podobny do operatora if-else
, tyle że jest jego bardziej złożoną wersją.
Zawsze możesz przepisać kod switch
jako wiele if
-s. Przykład:
Kod z przełącznikiem | Kod z if-else |
---|---|
|
|
Kod po lewej stronie będzie działał dokładnie tak samo, jak kod po prawej stronie.
Łańcuch w postaci kilku if-else
jest lepszy w przypadku, gdy if
w warunku występują różne złożone wyrażenia w każdym indywidualnym przypadku.
5. Czego można użyć jako parametru dla y switch
?
Nie wszystkie typy mogą być używane jako wartości w case
obrębie pliku switch
. Teraz możesz używać literałów następujących typów:
- typy całkowite:
byte
,short
,int
- typ
char
- typ
String
- wartości dowolnego
enum
typu
Żadne inne typy nie mogą być zapisywane jako wartości wewnątrz sprawy .
Przykład użycia enum
wewnątrz switch
:
Day day = Day.MONDAY;
switch (day)
{
case MONDAY:
System.out.println("Poniedziałek");
break;
case TUESDAY:
System.out.println("Wtorek");
break;
case WEDNESDAY:
System.out.println("Środa");
break;
case THURSDAY:
System.out.println("Czwartek");
break;
case FRIDAY:
System.out.println("Piątek");
break;
case SATURDAY:
System.out.println("Sobota");
break;
case SUNDAY:
System.out.println("Niedziela");
break;
}
Notatka. Jeśli używasz enum
inside switch
, nie musisz pisać nazwy klasy przed każdą wartością w case
. Wystarczy wpisać wartość.