if-else через switch-case в Java

149
27 февраля 2022, 07:00

Всегда ли конструкцию if-else можно реализовать через аналогичную switch-case в языке Java? Вопрос был на экзамене в вузе, я предположил, к примеру, что boolean-выражения через switch-case проверить не получится.

Answer 1

Оператор switch работает с примитивными типами данных: byte, short, char, и int. Также он работает с перечислимыми (итерируемыми) типами данных.

Можно использовать строки (String) и некоторые специальные производные от примитивных типы данных: Character, Byte, Short, и Integer.

Значение варианта case должно быть константой или литералом. Переменные запрещены.

Также вариант не может быть логического (boolean), вещественного и других типов данных, не перечисленных выше.

Соответственно конструкцию

if (x==a){....}
else if (x==b) {...}
else if (x==с) {...}
else if (x==d) {...}
else{...}
}

Не получится реализовать.

Получаем, что:

  1. не всегда
  2. только для итерируемых типов данных

Хотя с развитием Java ситуация может меняться.

READ ALSO
Ручной ввод в JDatePicker

Ручной ввод в JDatePicker

При ручном вводе даты возникает ошибка

122
PublishSubject в Presenter

PublishSubject в Presenter

PublishSubject получаю посредством метода в DbRepositoryСам DbRepository Singleton

101
Метод, принимающий значения типа List<>

Метод, принимающий значения типа List<>

Есть класс Book, который содержит поля типа String такие как Название книги, автор, издательство, тип переплета, год издательства, кол-во страниц...

82
Как читать wss:// поток в php без библиотек (streaming api vk)

Как читать wss:// поток в php без библиотек (streaming api vk)

Streaming api vk позволяет получать события со всего вк, и реализовано это через wss:// протоколНасколько я нагуглил, wss:// не поддерживается PHP по умолчанию

92