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 breakwswitch
Ważną cechą pracy switchjest 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 switchdo 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 |
|---|---|
|
|
switchNie 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 switchnie pasuje do wartości wyrażenia w nawiasach?
Jeśli nie zostanie znaleziony odpowiedni wariant, praca operatora switchzostanie zakończona, a program będzie kontynuował wykonywanie kodu zapisanego po nawiasach klamrowych operatora switch.
Jednak switchmoż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 caseopcja wewnątrz nie switchpasuje do wartości wyrażenia i jest switchzadeklarowana w default, jej kod zostanie wykonany. Przykład:
| Kod | Wyjście na wyświetlaczu |
|---|---|
|
|
4. Porównanie switchvs.if-else
Operator switchjest nieco podobny do operatora if-else, tyle że jest jego bardziej złożoną wersją.
Zawsze możesz przepisać kod switchjako 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-elsejest lepszy w przypadku, gdy ifw 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 caseobrę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
enumtypu
Żadne inne typy nie mogą być zapisywane jako wartości wewnątrz sprawy .
Przykład użycia enumwewną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 enuminside switch, nie musisz pisać nazwy klasy przed każdą wartością w case. Wystarczy wpisać wartość.
GO TO FULL VERSION