— Привіт, Аміго!
— Привіт, Білаабо! Тож радий тебе знову бачити. Тільки твої лекції такі гарні та зрозумілі. Не те, що ця Java Memory Model.
— Так, Білаабо вміє обирати лекції. Сьогодні я розповім тобі про switch.
— Так мені вже про нього розповідали, здається.
— Еллі. Аміго не хоче слухати лекцію про switch? Може, почнеш свою?
— Хочу хочу. Давай про switch.
— Ок. Java має такий оператор — Java switch. Він зручний, коли тобі потрібно виконати певні дії залежно від різних значень певної змінної.
Приклад зі switch | Аналогічний код |
---|---|
|
|
Оператор switch дозволяє стрибнути на потрібний шматок коду, якщо значення переданої до нього змінної збігається зі значенням, вказаним після слова case.
Якщо i дорівнює 1, то виконання перейде на рядок позначений «case 1».
Якщо i дорівнює 2, то виконання перейде на рядок позначений «case 2».
Якщо i дорівнює 3, то виконання перейде на рядок позначений «case 3».
Якщо перехід не виконався на якийсь із case'ів, то виконується на блок, позначений «default:»
— Зрозуміло. А справа – це та сама логіка, але реалізована за допомогою if-ів?
— Ага.
— А що це за слово break? Ти ж казав, що його можна використовувати лише у циклах?
— Так, можна й тут. При виконанні команди break ми відразу виходимо з switch.
Але якщо команду break прибрати, то всі рядки всередині switch'а виконуватимуться до кінця.
Приклад | Висновок, якщо i=1 | Висновок, якщо i=2 |
---|---|---|
|
один два три багато |
два три багато |
Фактично, case – це мітки в коді, і в switch ми стрибаємо на чергову мітку і… починаємо виконувати весь код до кінця switch'у, або поки не зустрінемо break.
— Тобто. якщо ми не напишемо break, то спочатку виконається рядок, на який ми перестрибнули, а потім всі інші до фігурної дужки, що закриває «}». Так?
— Так.
— Нічого складного. Але мені більше подобається з використанням if-ів. Там немає цих безглуздих break.
— Дуже часто if справді компактніше. Але іноді switch більш читальний.
Порівняй:
Приклад зі switch | Аналогічний код |
---|---|
|
|
— Не сказав би, що читабельніше.
— Гаразд, а як щодо такого прикладу?
Приклад зі switch | Аналогічний код |
---|---|
|
|
— Щось Білаабо в тебе не дуже й виходить. Тож break можна не писати, коли return?
— Ага. return одразу призведе до виходу з методу.
— Щось весь час з if-ами виходить компактніше. Але з switch цього разу вийшло читабельніше.
— Фух, нарешті.
Ще одна річ. Можна не писати default наприкінці. Тоді просто нічого не станеться, якщо жодна з міток не співпаде.
— Ну, точно, як if-else… але читабельніше, набагато читабельніше!
— Чудово. Радий, що тобі сподобалась моя лекція.
Тільки не забув. Спочатку всередині switch можна було використовувати змінні лише примітивних типів та enum'и. Але тепер туди додали підтримку типу String.
— Тобто. я можу написати так:
public int getNumber(String number)
{
switch(number)
{
case "one":
return 1;
case "two":
return 2;
case "three":
return 3;
default:
return -1;
}
}
— Ага. Щоправда, зручно?
— Так. Чудова штука switch!
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ