Оператор switch
Оператор switch в Java- это условный оператор, который дает возможность сравнивать переменную со списком значений.
Рассмотрим общую форму написания оператора switch:
switch(выражение) {
case значение1:
// Блок кода 1
break;
case значение2:
// Блок кода 2
break;
...
case значениеN:
// Блок кода N
break;
default :
// Блок кода для default
}
В круглых скобках мы указываем выражение
, значение которого будет сравниваться со списком значений, перечисленных после ключевого слова case
. Если выражение совпадает со значением1
, то выполняется блок кода, указанный после значение1
. Если выражение не совпадает ни с одним из значений, то выполняется блок кода для default
. Этот блок кода является необязательным - можно написать оператор switch и без него.
Выражение в switch должно иметь тип char
, byte
, short
, int
, enum
(начиная с Java 6) или String
(начиная с Java 7). Использование любого другого типа, например float
, приведет к ошибке компиляции.
Оператор switch может только проверять на равенство. Такие операторы как >=
, <=
недопустимы.
Рассмотрим первый пример - задается число от 1 до 3. Если 1 - включается зеленый цвет светофора, 2 - желтый и 3 - красный. Если любое другое число, то выполнится блок кода default
:
public class TrafficLight {
public static void main(String[] args) {
int x = 3;
switch (x) {
case 1:
System.out.println("Зеленый");
break;
case 2:
System.out.println("Желтый");
break;
case 3:
System.out.println("Красный");
break;
default:
System.out.println("Неправильно введено число");
break;
}
}
}
Для нескольких значений case можно указывать один блок, как показано в следующем примере:
public class SwitchDemo1 {
public static void main(String[] args) {
int month = 4;
String season;
switch (month) {
case 12:
case 1:
case 2:
season = "Winter";
break;
case 3:
case 4:
case 5:
season = "Spring";
break;
case 6:
case 7:
case 8:
season = "Summer";
break;
case 9:
case 10:
case 11:
season = "Autumn";
break;
default:
season = "Not a Month";
}
System.out.println("April is in the " + season + ".");
}
}
Если выражение в switch имеет тип меньший чем int
(byte
, short
или char
), case константа должна соответствовать этому типу. Например следующий пример не откомпилируется:
byte number = 2;
switch (number) {
case 13:
case 129://compiler error
}
Также нельзя использовать несколько case констант с одним и тем же значением. Следующий блок кода не откомпилируется:
int number = 90;
switch (number) {
case 50:
System.out.println("50");
case 50:
System.out.println("50"); //compile error
case 140:
System.out.println("140");
default:
System.out.println("default");
}
Выражение в switch может содержать Character
, Byte
, Short
и Integer
значения:
switch (new Integer(9)) {
case 9:
System.out.println("9");
}
Case константы просматриваются сверху вниз, и первая совпавшая case константа в switch является точкой входа. Соответствующий ей блок и все последующие блоки будут выполняться. Например:
public class SwitchDemo2 {
public static void main(String[] args) {
String str = "potato";
switch (str) {
case "tomato":
System.out.print("tomato ");
case "potato":
System.out.print("potato ");
case "cucumber":
System.out.print("cucumber ");
default:
System.out.println("any");
}
}
}
Результат выполнения программы:
potato cucumber any
Для того чтобы выйти из switch выражения, используйте ключевое слово break
. Например, изменим предыдущий пример, чтобы выводилось только одно слово:
Vegetable p = Vegetable.potato;
switch (p) {
case tomato:
System.out.print("tomato ");
break;
case potato:
System.out.print("potato ");
break;
case cucumber:
System.out.print("cucumber ");
break;
default:
System.out.println("any");
}
Результат будет:
potato
Секция default в switch обрабатывает все значения, которые не указаны явно в одной из case секций. Секция default может размещаться в любом месте, необязательно в конце:
public class SwitchDemo3 {
public static void main(String[] args) {
int z = 8;
switch (z) {
case 1:
System.out.println("Fall to one");
default:
System.out.println("default");
case 3:
System.out.println("Fall to three");
case 4:
System.out.println("Fall to four");
}
}
}
Начиная с Java 7 можно использовать объекты типа String в switch. Например:
String exam = null;
switch (exam) {
case "OCPJP 7":
System.out.print(exam + ": 1Z0-804");
break;
case "OCPJP 8":
System.out.print(exam + ": 1Z0-809");
break;
default:
System.out.print(exam + ": ----");
break;
}
Презентацию с видео можно скачать на Patreon.
Please log in or register to have a possibility to add comment.