Стиль switch со стрелкой
Используйте современный синтаксис switch со стрелкой
«Стиль switch со стрелкой» — бесплатный урок Java Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Java Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Java Academy содержит 4 уроков всего.
Проблема старого оператора выбора
Классический оператор Java switch использовал метки с двоеточиями и требовал указывать break после каждого варианта. Если забыть break, возникали ошибки из-за проваливания, когда выполнение переходило к следующему варианту.
Современная Java (14+) вводит стрелочный синтаксис, который полностью решает эту проблему.
Основы стрелочного синтаксиса
В стрелочном варианте switch каждая метка использует -> вместо :. Проваливания нет, и break не требуется. Каждая ветка выполняет только свой код.
public class Main {
public static void main(String[] args) {
int day = 3;
switch (day) {
case 1 -> System.out.println("Monday");
case 3 -> System.out.println("Wednesday");
default -> System.out.println("Other day");
}
}
}Больше не нужен оператор прерывания
В старом синтаксисе после каждого варианта требовалось писать break;. Стрелочная форма полностью избавляет от этой необходимости. Выполняется только подходящая ветка.
public class Main {
public static void main(String[] args) {
char grade = 'B';
switch (grade) {
case 'A' -> System.out.println("Excellent");
case 'B' -> System.out.println("Good");
case 'C' -> System.out.println("Average");
default -> System.out.println("Needs work");
}
}
}Тела блоков
Если ветке требуется больше одной инструкции, заключите её в фигурные скобки { }. Блок может содержать любое количество инструкций.
public class Main {
public static void main(String[] args) {
int code = 2;
switch (code) {
case 2 -> {
System.out.println("Processing code 2");
System.out.println("Done");
}
default -> System.out.println("Unknown");
}
}
}Выбор по строкам
Стрелочный switch работает со значениями String так же, как и старый синтаксис. Сравнение внутри выполняется с помощью equals, поэтому оно чувствительно к регистру.
public class Main {
public static void main(String[] args) {
String fruit = "apple";
switch (fruit) {
case "apple" -> System.out.println("Red or green");
case "banana" -> System.out.println("Yellow");
default -> System.out.println("Unknown fruit");
}
}
}Ветка по умолчанию
Ветка default обрабатывает любое значение, не охваченное другими вариантами. Рекомендуется всегда включать её, чтобы неожиданные входные данные обрабатывались корректно.
public class Main {
public static void main(String[] args) {
int level = 99;
switch (level) {
case 1 -> System.out.println("Beginner");
case 2 -> System.out.println("Intermediate");
default -> System.out.println("Unknown level: " + level);
}
}
}Выбор по перечислениям
Стрелочный switch отлично сочетается с типами enum. В каждой метке можно опустить префикс с именем перечисления, чтобы ветки оставались короткими и понятными.
public class Main {
enum Color { RED, GREEN, BLUE }
public static void main(String[] args) {
Color c = Color.GREEN;
switch (c) {
case RED -> System.out.println("Stop");
case GREEN -> System.out.println("Go");
case BLUE -> System.out.println("Calm");
}
}
}Вызов методов в ветках
Каждая стрелочная ветка может вызывать любой метод. Это сохраняет читаемость switch, передавая основную работу в другие места.
public class Main {
static void greet(String who) {
System.out.println("Hello, " + who);
}
public static void main(String[] args) {
int who = 1;
switch (who) {
case 1 -> greet("Alice");
case 2 -> greet("Bob");
default -> greet("Stranger");
}
}
}Понятнее, чем if-else
Стрелочный switch часто заменяет длинные цепочки if-else. Если нужно сравнить одну переменную со множеством фиксированных значений, switch читается понятнее.
public class Main {
public static void main(String[] args) {
int month = 4;
switch (month) {
case 12, 1, 2 -> System.out.println("Winter");
case 3, 4, 5 -> System.out.println("Spring");
case 6, 7, 8 -> System.out.println("Summer");
default -> System.out.println("Autumn");
}
}
}Только побочные действия
Оператор switch (здесь используется стрелочная форма) выполняет действия, но не выдаёт значение. Чтобы вернуть значение, используется switch-выражение, которое рассматривается в следующем уроке.
public class Main {
public static void main(String[] args) {
int n = 5;
switch (n % 2) {
case 0 -> System.out.println(n + " is even");
case 1 -> System.out.println(n + " is odd");
}
}
}Несколько значений, одна ветка
Несколько значений могут использовать одну ветку, если разделить их запятыми. Это предварительное знакомство с вариантами с несколькими метками, которые рассматриваются позже.
public class Main {
public static void main(String[] args) {
char c = 'e';
switch (c) {
case 'a', 'e', 'i', 'o', 'u' -> System.out.println("Vowel");
default -> System.out.println("Consonant");
}
}
}Проверка знаний
Каково главное преимущество стрелочного варианта switch по сравнению со старым синтаксисом с двоеточиями?
Итоги
Вы изучили современный стрелочный синтаксис switch:
- Используйте
->вместо: - Проваливания нет, и
breakне требуется - Используйте фигурные скобки
{ }для веток с несколькими инструкциями - Разделяйте метки запятыми, чтобы использовать одну ветку
- Всегда включайте ветку
default
Часто задаваемые вопросы
Урок «Стиль switch со стрелкой» бесплатный?
Да — полный текст урока «Стиль switch со стрелкой» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Java Academy, подпишись на CoddyKit PRO. Курс Java Academy содержит 4 уроков всего.
Чему я научусь в уроке «Стиль switch со стрелкой»?
Используйте современный синтаксис switch со стрелкой Ты практикуешь Java Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Java Academy?
Предыдущий опыт не требуется. Java Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Стиль switch со стрелкой»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Java Academy?
Да. Каждый урок Java Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Стиль switch со стрелкой
- switch как выражение
- Ключевое слово yield
- Варианты с несколькими метками