Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник Java

switch

Выбирает ветку по значению; в форме выражения возвращает результат.

Доступно с: Java 1.0

Синтаксис

switch (value) { case A -> …; case B, C -> …; default -> … }

Примеры

Switch-выражение со стрелками — без break и «проваливания»:

void main() {
    String day = "SAT";
    String type = switch (day) {
        case "SAT", "SUN" -> "weekend";
        case "MON", "TUE", "WED", "THU", "FRI" -> "weekday";
        default -> "unknown";
    };
    IO.println(type);
}

Результат:

weekend

Образцы типов и условие when (Java 21):

String describe(Object o) {
    return switch (o) {
        case null -> "null";
        case Integer i when i < 0 -> "negative int";
        case Integer i -> "int " + i;
        case String s -> "string of length " + s.length();
        default -> "something else";
    };
}
 
void main() {
    IO.println(describe(-5));
    IO.println(describe(8));
    IO.println(describe("hi"));
    IO.println(describe(null));
}

Результат:

negative int
int 8
string of length 2
null

Старая форма с двоеточием: без break выполнение идёт в следующую ветку:

void main() {
    int level = 1;
    switch (level) {
        case 1:
            IO.println("level 1");
        case 2:
            IO.println("level 2");
            break;
        default:
            IO.println("other");
    }
}

Результат:

level 1
level 2

Примечания

switch работает с int и меньшими целыми, char, String, enum и (с Java 21) с любыми объектами через образцы типов. Switch-выражение должно покрывать все варианты: для строк и чисел нужен default, для enum и sealed-иерархий его можно не писать, если перечислены все значения.

См. также

  • yield — Возвращает значение из блока внутри switch-выражения.
  • if / else — Выполняет блок кода, только если условие истинно.
  • enum — Объявляет перечисление — тип с фиксированным набором значений.
  • sealed / permits — Ограничивает список классов, которым разрешено наследоваться от класса или реализовывать интерфейс.
  • instanceof — Проверяет, является ли объект экземпляром типа, и сразу даёт переменную этого типа.

Вопросы и ответы по теме

В учебнике

  • switch — Оператор switch в Java: стрелочные метки, несколько значений в case, switch-выражение с возвратом значения, yield и классическая форма с break.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.