Java 14: улучшенные примеры расширяющихся выражений

Java 14: улучшенные примеры расширяющихся выражений Отношения
java, java 14, switch block, switch statement, switch expression, switch enhancement, switch new features, java 14 new features, switch examples

Java 14: улучшенные примеры расширяющихся выражений

В этом посте приведены примеры кода, которые помогут вам понять новые возможности, добавленные к построению блоков switch в языке программирования Java начиная с JDK 14.

1. Что нового в блоке switch в Java 14?

Java 14 adds a new form of switch label “case L ->’Разрешение использования нескольких констант в каждом конкретном случае и возврат значения всего блока switchcase для использования в выражениях switch’.

Давайте рассмотрим пример кода, чтобы понять эти улучшения в блоке switch.

2. Метки переключателей нового стиля

В традиционных блоках switch каждый случай связан только с одной константой, поэтому группы фиксированных групп с одинаковой логикой часто должны выпадать. Рассмотрим следующий пример кода.

Public void daysofmonth (int month)< switch (month) < case 1: case 3: case 5: case 7: case 8: case 10: case 12: System.out.println("this month has 31 days"); break; case 4: case 6: case 9: System.out.println("this month has 30 days"); break; case 2: System.out.println("February can have 28 or 29 days"); break; default: System.out.println("invalid month"); >>

Как вы знаете, этот метод выводит количество дней в конкретном месяце. В некоторых месяцах может быть 31 день, в других — 30 дней, в феврале — 28 или 29 дней.

Использовать случаи таким образом не обязательно. Поэтому в Java 14 можно использовать новый формат метки switch, который позволяет использовать несколько констант в одном регистре, как показано ниже

Switch (month).< case 1, 3, 5, 7, 8, 10, 12 ->System.out.println("this month has 31 days"); case 4, 6, 9 -> System.out.println("this month has 30 days"); case 2 -> System.out.println("February can have 28 or 29 days"); default -> System.out.println("invalid month"); >

Now, with the new form of switch label “case L ->’Код блока switch выглядит более четким, лаконичным и читабельным. В случае с ошибками в коде (падение и отсутствие разрыва) можно использовать несколько констант.

В новой форме меток switch код после метки со стрелкой может быть выражением, блоком или оператором throw. Например:

Switch (month).< case 1, 3, 5, 7, 8, 10, 12 ->System.out.println("this month has 31 days"); case 4, 6, 9 -> System.out.println("this month has 30 days"); case 2 -> < Scanner scanner = new Scanner(System.in); System.out.print("Enter year: "); int year = scanner.nextInt(); if (year % 4 == 0) System.out.println("This february has 29 days"); else System.out.println("This February has 28 days"); >default -> throw new IllegalArgumentException("Invalid month"); >

Помните, что в новой форме меток switch нет необходимости вводить оператор break, поскольку код не переходит в следующий регистр.

3. Пример выражения switch

Начиная с Java 14, вы можете использовать блоки switch case в выражениях. Это означает, что блок switch может возвращать значение. Использование традиционного оператора switch требует использования временных переменных, как показано в следующем коде.

int days = 0; switch (month).< case 1: case 3: case 5: case 7: case 8: case 10: case 12: days = 31; break; case 4: case 6: case 9: days = 30; break; case 2: days = 28; break; default: throw new IllegalArgumentException("Invalid month"); >// days.

В Java 14 приведенный выше код можно переписать в явном виде следующим образом

int days = switch (month)< case 1, 3, 5, 7, 8, 10, 12 ->31; case 4, 6, 9 -> 30; case 2 -> 28; default -> 0; >; // используйте дни.
system. out. println (switch (month))< case 1, 3, 5, 7, 8, 10, 12 ->31; case 4, 6, 9 -> 30; case 2 -> 28; default -> 0; > );

Такое удобное использование блоков переключателей называется формулой переключателя. Если код case является блоком кода, то ключевое слово yield можно использовать для возврата цены блока switch. Например:

int days = switch (month)< case 1, 3, 5, 7, 8, 10, 12 ->31; case 4, 6, 9 -> 30; case 2 -> < Scanner scanner = new Scanner(System.in); System.out.print("Enter year: "); int year = scanner.nextInt(); if (year % 4 == 0) yield 29; else yield 28; >default -> 0; >; // используйте дни.

Кроме того, операторы yield можно использовать в сочетании с обычными метками case, заканчивающимися на up или down, например

int days = switch (month)< case 1, 3, 5, 7, 8, 10, 12: yield 31; case 4, 6, 9: yield 30; case 2: < Scanner scanner = new Scanner(System.in); System.out.print("Enter year: "); int year = scanner.nextInt(); if (year % 4 == 0) yield 29; else yield 28; >default: yield 0; >; // используйте дни.

But you can’t mix both “case L :” and “case L ->’В блоке switch вместо return выбирается ключевое слово yield. Это сделано для того, чтобы избежать путаницы. Return покидает метод, а surrender возвращает цену и покидает блок switch.

Заключение:

Мы надеемся, что этот пост прояснил все ваши сомнения по поводу операторов Switch и выражений switch. Я думаю, что эти улучшения очень полезны для разработчиков, так как они позволяют им использовать блоки switch более гибко. Кроме того, они уменьшают возможности языка программирования Java.

Видеоверсию этого семинара также можно посмотреть здесь.

Ссылки:

Похожие темы:

  • Switch case: использование буквенно-цифровых символов в операторах switch case
  • Заметки о проверках выполнения в Java

Другие рекомендуемые семинары:

  • 9 правил для создателей Java
  • 12 правил и примеров по генетике Java
  • 12 правил переполнения в Java, которые необходимо знать
  • 10 лучших практик Java Core, которые должен знать каждый Java-разработчик
  • Понимание интерфейсов Java
  • Понимание абстракций в Java
  • Понимание столкновений в Java
  • Понимание генетики в Java
  • Понимание полиморфизма в Java

Об авторе: для автора:

Нам Ха Минь — сертифицированный Java-программист (SCJP и SCWCD). Он начал программировать на Java еще в Java 1.4 и с тех пор влюблен в Java. Подружитесь с ним на Facebook и смотрите его Java-видео на YouTube.

Добавить комментарий

Комментировать.

codejava.net делится семинарами по Java, примерами кода и образцами проектов для разработчиков всех уровней. codeJava.net был создан и поддерживается Нам Ха Минхом, страстным разработчиком.

Copyright©2012-2023 codejava. net, все права защищены.

Оцените статью