1. Оператор множинного вибору switch
У Java є ще один цікавий оператор, який дістався у спадок від бабусі (мови C++) — це оператор switch
. Його ще називають оператором множинного вибору. Він має дещо громіздкий вигляд:
switch(вираз)
{
case значення1: код1;
case значення2: код2;
case значення3: код3;
}
У дужках вказується який-небудь вираз або змінна. Якщо значення виразу дорівнює значення1
, виконується код1
, якщо дорівнює значення2
, виконується код2
, якщо дорівнює значення3
, виконується код3
.
Приклад:
Код | Виведення на екран |
---|---|
|
|
2. Оператор break
в операторі switch
Важливою особливістю роботи switch
є те, що програма просто перестрибує на потрібний рядок (на потрібний блок коду) і потім виконує всі блоки коду до кінця оператора switch
. Не тільки той блок коду, який відповідає значенню, переданому у switch
, а всі блоки коду до кінця оператора switch
.
Приклад:
Код | Виведення на екран |
---|---|
|
|
Коли температура дорівнює 36, програма перейде всередині оператора switch
на перший блок коду — перший рядок, і після його виконання буде виконано всі наступні блоки коду.
Якщо ви хочете, щоб у кожному випадку виконувався тільки той блок коду, на який перестрибнула програма, потрібно після цього блоку коду вставити оператор break
.
Приклад:
Код | Виведення на екран |
---|---|
|
|
Після останнього варіанта в операторі switch
можна break
не вставляти — усе одно це останній блок коду.
3. Дія за замовчуванням: default
Ще один важливий момент. А що станеться, якщо значення виразу в круглих дужках не збігається з жодним значенням, передбаченим у switch
?
Якщо відповідного варіанту не буде знайдено, робота оператора switch
завершиться, і програма перейде до виконання коду після фігурної дужки, що закриває оператор switch
.
Проте можна налаштувати switch
на поведінку, аналогічну гілці else в операторі if-else
. Для цього потрібно скористатися ключовим словом default
.
Якщо жоден варіант case
в операторі switch
не збігається зі значенням виразу, то за наявності у switch
варіанту default
буде виконано цей код. Приклад:
Код | Виведення на екран |
---|---|
|
|
4. Порівняння switch
та if-else
Оператор switch
дещо схожий на оператор if-else
, тільки трохи складніший.
Ви завжди можете переписати код з оператором switch
на код із декількох if
-ів Приклад:
Код з оператором switch | Код з оператором if-else |
---|---|
|
|
Код ліворуч працюватиме так само, як і код праворуч.
Ланцюжок із декількох if-else
краще використовувати тоді, коли всередині умови if
для кожного окремого випадку є різні складні вирази.
5. Які типи даних можна використовувати як параметр оператора switch
?
Не всі типи даних підходять для використання у варіантах case
оператора switch
. Наразі можна використовувати літерали таких типів:
- цілі типи:
byte
,short
,int
- тип
char
- тип
String
- значення будь-якого
enum
-типу
Інші типи даних використовувати як значення case не можна.
Приклад використання enum
в операторі switch
:
Day day = Day.MONDAY;
switch (day)
{
case MONDAY:
System.out.println("Понеділок");
break;
case TUESDAY:
System.out.println("Вівторок");
break;
case WEDNESDAY:
System.out.println("Середа");
break;
case THURSDAY:
System.out.println("Четвер");
break;
case FRIDAY:
System.out.println("П'ятниця");
break;
case SATURDAY:
System.out.println("Субота");
break;
case SUNDAY:
System.out.println("Неділя");
break;
}
Примітка. Якщо в операторі switch
використовується перелік enum
, у case
можна не писати ім'я класу перед кожним значенням. Досить просто вказати значення.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ