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 можна не писати ім'я класу перед кожним значенням. Досить просто вказати значення.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ