Оператор вибору switch є подібний до оператора умовного переходу if–else. Він дозволяє організувати розгалуження процесу виконання в програмі. У деяких випадках використання оператора вибору switch дає більш компактний програмний код у порівняння з оператором умовного переходу if-else.
Де:вираз – керуючий вираз, який може мати один з цілочисельних типів: byte, int, short, char або зчислений тип. У нових версіях JDK вираз може мати тип String.значення1, значення2, … , значення. N – константні вирази (літеральні значення). Кожне значення має бути сумісним за типом з вказаним виразом. Блок default може бути відсутній.
Принцип роботи оператора switch. Оператор вибору switch працює наступним чином. Значення виразу порівнюється з кожним зі значень (значення1, значення2, …, значення. N), що слідують після ключового слова case. Якщо знайдено співпадіння, тоді виконуються оператори, що слідують після цієї частини case. Якщо в жодному з варіантів після case співпадіння не знайдено, тоді виконуються оператори, що йдуть в блоці default. Якщо блок default відсутній (може бути відсутній), тоді нічого не відбувається і виконується наступний оператор, що слідує за оператором switch. Оператор break необхідний для негайного виходу з оператора switch. Якщо виконується оператор break, тоді виконується наступний після switch оператор.
Переваги оператора switch у порівнянні з оператором if. У порівнянні з оператором if переваги оператора switch наступні:при виборі з великої групи значень оператор switch працює швидше ніж оператор if-else. Це зв’язано з тим, що в операторі switch константи усіх гілок case та вираз мають однаковий тип. Тому достатньо здійснити перевірку на рівніть. В операторі if-else компілятор наперед не знає типи результатів виразів у різних гілках порівняння, що потребує додаткових перетворень які займають час.у випадках коли виконується код для декількох операторів гілок case без вказання розділяючих їх операторів break.
Недоліки оператора switch у порівнянні з оператором if. Порівняно з оператором if, оператор switch має такі недоліки:в операторі switch, у кожній гілці виконується перевірка тільки на рівність (пошук на співпадіння в гілці case). В операторі if у кожній гілці можна обчислювати будь-який логічний вираз будь-якого типу;в операторі switch вираз, що порівнюється може бути тільки типу int, зчисленням enum або типу String (починаючи з версії JDK 7). Вираз не може бути типом з плаваючою комою. В операторі if порівнюваний вираз може бути будь-якого типу;у двох різних гілках case константи не можуть мати однакові значення. Однакові значення у гілках case допускаються, якщо ці гілки розміщуються на різних рівнях вкладення у випадку вкладених операторів switch.