Switch в Java | Синтаксис и примеры
Оператор switch используется для выполнения различных действий на основе разных условий. Оператор switch Java работает с байтовыми, короткими, char и int примитивными типами данных. Он также работает с перечисляемыми типами, классом String и несколькими специальными классами, которые обертывают некоторые примитивные типы: Character, Byte, Short и Integer.
Синтаксис:
switch(expression) { case n: code block break; case n: code block break; default: default code block }
Выражение (условие) переключателя оценивается один раз, а значение выражения сравнивается со значениями каждого случая. Если есть совпадение, выполняется соответствующий блок кода. Если аргумент case case не найден, программа ищет необязательное предложение по умолчанию, и если оно найдено, передает управление этому предложению, выполняя связанные операторы. Необязательный оператор break, связанный с каждым ярлыком case, гарантирует, что программа выйдет из коммутатора после выполнения согласованного оператора и продолжит выполнение в операторе следующего коммутатора. Если разрыв пропущен, программа продолжает выполнение в следующем выражении в инструкции switch.
Пример:
class TestClass { public static void main (String[] args) { int inDay = 2; String day; switch (inDay) { case 1: day = "Subday"; break; case 2: day = "Monday"; break; case 3: day = "Tuesday"; break; case 4: day = "Wednesday"; break; case 5: day = "Thursday"; break; case 6: day = "Friday"; break; case 7: day = "Saturday"; break; default: day = "Invalid entry"; break; } System.out.println("Selected day is: " + day); } }
Вывод:
Selected day is: Monday
В приведенном выше случае inDay является параметром для переключения. Зависит от параметра переключателя, для строки дня присваивается соответствующее значение. Здесь inDay = 2, поэтому переключатель назначает день = «понедельник».
switch..case в строке
Операторы switch с примерами String были реализованы в Java SE 7, по крайней мере, через 16 лет после их первого запроса. Явная причина задержки не была предоставлена, но, скорее всего, это связано с производительностью.
class TestClass { public static void main (String[] args) { String inGrade = "A"; String message; switch (inGrade) { case "A+": message = "Excellent !!"; break; case "A": message = "Very Good !!"; break; case "B": message = "Good !!"; break; case "C": message = "Passed !!"; break; case "D": message = "Failed !!"; break; default: message = "Invalid entry"; break; } System.out.println(message); } }
Вывод:
Very Good !!
Коммутаторы на основе целых чисел могут быть оптимизированы для очень эффективного кода. Переключатели на основе другого типа данных могут быть скомпилированы только в ряд операторов if(). По этой причине C & C ++ разрешает только переключатели только для целочисленных типов.