Условные операторы:
If
if (условие)
инструкция1;
else
инструкция2;
! — «отрицание»
&& — логическое «и»
|| — логическое «или»
== — равенство
Оператор if можно записать в одну строку.
Стандартный вариант:
if(condition) {
result = doThis();
} else {
result = doThat();
}
В одну строку
result = condition ? doThis() : doThat();
switch
У использования switch в Java есть свои особенности:
- надо не забывать ставить в конце каждой ветке break;
- нельзя объявить в разных ветках переменные с одинаковым именем.
- нельзя сравнивать с null
Переключатель работает только с четырьмя примитивами и их оболочками, а также с типом перечисления и классом String:
- byte and Byte;
- short and Short;
- int and Integer;
- char and Character;
- enum;
- String.
Пример использования:
int result;
switch (number) {
case 1:
result = callMethod("one");
break;
case 2:
result = callMethod("two");
break;
default:
result = callMethod("many");
break;
}
Начиная с Java 12 появилась возможность использовать swith-выражения. Например:
switch (number) {
case 1 -> callMethod("one");
case 2 -> callMethod("two");
default -> callMethod("many");
}
стрелка может указывать либо на один оператор (как выше), либо на блок, выделенный фигурными скобками. Блоки необходимы для использования более одной строки кода в case. При этом они имеют дополнительное преимущество — позволяют создавать одинаковые имена переменных в разных ветках за счет локальной области видимости для каждой ветки.
В swith-выражениях для выхода из блока используется оператор yield вместо return, так как return может бить истолкован как выход из класса, что вполне допустимо.
Swith активно развивается и для его использования надо внимательно почитать документацию.
Например использование уточнений:
String str = // ...
String length = switch (str) {
case str.length() > 42 -> "long";
case str.length() > 19 -> "medium";
case str.length() > 1 -> "small";
case null || str.length() == 0 -> "empty";
};
|