0Pricing
Java Academy · Урок

Стиль 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 — локальная установка не требуется.

Все уроки этого курса

  1. Стиль switch со стрелкой
  2. switch как выражение
  3. Ключевое слово yield
  4. Варианты с несколькими метками
← Назад к Java Academy