Операторы switch

Средний уровень Java

Jim White

Java Developer

Что такое switch?

  • Switch выполняет функцию, схожую с if-else
    • Выполняет действия в зависимости от условия
    • Заменяет цепочку условий if-then-else
  • Считается лаконичнее нескольких if-then-else
if (bonus == 10000) {
    System.out.println("Let's buy a car!");
} else if (bonus == 5000) {
    System.out.println("Let's take a trip!");
} else if (bonus == 1000) {
    System.out.println("Let's save!");
}
Средний уровень Java

Синтаксис switch

switch (expression) {
    case value1:  // if (expression == value1)
        // statements
    case value2:  // if (expression == value2)
        // statements
    // use as many case statements as needed
}
Средний уровень Java

Пример switch

char direction = 'N';

switch (direction) {
    case 'E':  
        System.out.println("We are headed east.");
    case 'S':  
        System.out.println("We are headed south.");
    case 'W':  
        System.out.println("We are headed west.");
    case 'N':   
        System.out.println("We are headed north."); // This would be printed
}
Средний уровень Java

Break

  • Останавливает выполнение остальных ветвей
    • Без break Java продолжает выполнять следующие ветви до первого break
char direction = 'W';

switch (direction) {
    case 'E':
        System.out.println("We are headed east.");
    case 'S':
        System.out.println("We are headed south.");
    case 'W':
        System.out.println("We are headed west."); // This would be printed
    case 'N':
        System.out.println("We are headed north."); // This would also be printed
}
Средний уровень Java

break позволяет объединять несколько ветвей:

char direction = 'N';

switch (direction) {
    case 'E':     
    case 'W':  
        System.out.println("We are headed east or west.");
        break;
    case 'S':  
    case 'N':
        System.out.println("We are headed south or north.");
        break;       
}
We are headed south or north.
Средний уровень Java

Default

  • В конец switch можно добавить необязательную ветвь default
    • У ветви default нет значения для сравнения с выражением
    • Если ни одна ветвь не совпала с выражением, выполняется default
    • default должна быть последней ветвью в switch
  • default — способ обработать «все прочие значения»
char direction = 'z';

switch (direction) {
  case 'E':     
  case 'W':  
    System.out.println("To east or west.");
    break;
  case 'S':  
  case 'N':
    System.out.println("To south or north.");
    break; 
  default:
    System.out.println("We are lost.");
}
We are lost.
Средний уровень Java

Условные операторы и switch

  • Условные операторы позволяют решить ту же задачу
  • Работают с любыми типами данных
char character = 'A';
if (character == 'A') {
    System.out.println("It's A");
} else if (direction =='B') {
    System.out.println("It's B");
} else {
    System.out.println("Unknown");
}
  • Switch легче читается
  • Работает только с некоторыми типами: int, byte, short, char или String
char character = 'A';
switch (character) {
  case 'A':
    System.out.println("It's A");
    break;
  case 'B':  
    System.out.println("It's B");
    break;
  default:
    System.out.println("Unknown");
}
Средний уровень Java

Давайте потренируемся!

Средний уровень Java

Preparing Video For Download...