Оглавление
- Введение
- Выражения
- Основные операторы
- Переменные
- Строки и печать
- Условия if и else
- Выражение switch
- Тернарный оператор
- Циклы while и for
- Массивы
- Представление данных и типы данных
- Методы
- Область видимости переменных
- Комментарии. Javadoc
- Исключения
- Рекурсия
- Инкапсуляция. Объекты и классы
- Классы и типы
- Область видимости
- Наследование
- Приведение типов
- Полиморфизм
- Переопределение и перегрузка
- Примитивы и объекты
- Абстракция
- Интерфейсы. Абстрактные методы и классы
- Пакеты
- Абстрактные классы vs Интерфейсы
- Конец ознакомительного фрагмента
Выражение switch
Для исследования проблемы else, давайте взглянем на эти два блока кода.
Единственное различие между двумя блоками является идентификация принадлежности else.
И здесь могут быть два вопроса.
Первый, к какому выражению if выражение else принадлежит?
Второй вопрос, это то, каким будет значение после оценки if выражения?
Идентификация фактически не влияет на то, как компилятор будет интерпретировать блоки кодов.
В Java, else выражение соотносится с ближайшим возможным if выражением.
В этом случае, это проверка значения b.
Таким образом, здесь блок кода слева такой же, как код блока справа, с парой вставленных фигурных скобок.
Результат оценки блока кода приведет к установке значения a = 30 в конце выполнения.
Мы можем также использовать комбинацию if-else if.
Пример здесь показывает, как эта комбинация может быть использована для определения уровня знаний в зависимости от оценки.
Обратите внимание, что это будет иметь большое значение, если ключевое слово else остается перед if.
Сравните со случаем, когда else убрано.
В этом случае поток выполнения прерываться не будет.
В то время как if выражение позволяет выбрать из двух возможных путей, switch выражение позволяет более двух путей выполнения.
Вот диаграмма для иллюстрации потока управления switch выражения.
И вот синтаксис switch выражения.
Синтаксис switch выражения начинается с ключевого слова switch.
Выражение switch может иметь тип char, byte, short или int, и String.
Значения case value1, value2 и т.д., должны быть того же типа, что и выражение switch.
Ключевое слово break используется для выполнения switch выражения.
Важно помнить, что без break, поток будет продолжать двигаться к следующему case, пока break не будет найден.
Наконец, есть опция по умолчанию.
С ключевым словом default, эта часть кода будет выполняться только, когда никакие другие случаи не соответствуют.
Теперь посмотрим пример с использованием switch выражения.
Угадайте, что произойдет, если убрать все ключевые слова break?
Это будет то же самое, как если в примере if-else if убрать ключевое слово else.
На самом деле, все, что может быть сделано с помощью switch выражения, также может быть сделано с помощью if-else выражения.
Таким образом, в отличие от операторов if и else оператор switch может иметь несколько возможных путей выполнения.
И switch работает с примитивными типами данных char, byte, short или int и строками.
Решение о том, следует ли использовать операторы if и else или оператор switch, зависит от выражения, которое тестирует оператор.
Операторы if и else могут тестировать выражения на основе диапазонов значений или условий, тогда как оператор switch проверяет выражения, основанные только на одном перечисляемом значении.