1. Обзор
В самом общем смысле программа - это список инструкций. Управляющие структуры - это программные блоки, которые могут изменить путь, по которому мы выполняем эти инструкции.
В этом руководстве мы исследуем управляющие структуры в Java.
Есть три типа управляющих структур:
- Условные переходы, которые мы используем для выбора между двумя или более путями. В Java есть три типа: if / else / else if , тернарный оператор и переключатель .
- Циклы, которые используются для перебора нескольких значений / объектов и многократного выполнения определенных блоков кода. Основные типы циклов в Java - for , while и do while .
- Операторы ветвления, которые используются для изменения потока управления в циклах. В Java есть два типа: break и continue .
2. Если / Иначе / Иначе Если
Оператор if / else является самой базовой из управляющих структур, но также может считаться самой основой принятия решений в программировании.
Хотя if можно использовать отдельно, наиболее распространенный сценарий использования - это выбор между двумя путями с if / else :
if (count > 2) { System.out.println("Count is higher than 2"); } else { System.out.println("Count is lower or equal than 2"); }
Теоретически мы можем бесконечно связывать или вкладывать блоки if / else, но это ухудшит читаемость кода, и поэтому это не рекомендуется.
В оставшейся части статьи мы рассмотрим альтернативные утверждения.
3. Тернарный оператор
Мы можем использовать тернарный оператор как сокращенное выражение, которое работает как оператор if / else .
Давайте еще раз посмотрим на наш пример if / else :
if (count > 2) { System.out.println("Count is higher than 2"); } else { System.out.println("Count is lower or equal than 2"); }
Мы можем реорганизовать это с помощью тернара следующим образом:
System.out.println(count > 2 ? "Count is higher than 2" : "Count is lower or equal than 2");
Хотя троичный код может быть отличным способом сделать наш код более читабельным, он не всегда является хорошей заменой if / else.
4. Переключить
Если у нас есть несколько вариантов выбора, мы можем использовать оператор switch .
Давайте снова посмотрим на простой пример:
int count = 3; switch (count) { case 0: System.out.println("Count is equal to 0"); break; case 1: System.out.println("Count is equal to 1"); break; default: System.out.println("Count is either negative, or higher than 1"); break; }
Три или более операторов if / else могут быть трудночитаемыми. В качестве одного из возможных обходных путей мы можем использовать переключатель, как показано выше.
Также имейте в виду, что переключатель имеет ограничения области действия и ввода, которые нам нужно запомнить перед его использованием.
5. Петли
Мы используем циклы, когда нам нужно повторить один и тот же код несколько раз подряд.
Давайте посмотрим на быстрый пример сопоставимых циклов for и while :
for (int i = 1; i <= 50; i++) { methodToRepeat(); } int whileCounter = 1; while (whileCounter <= 50) { methodToRepeat(); whileCounter++; }
Оба блока кода выше будут вызывать methodToRepeat 50 раз.
6. Перерыв
Нам нужно использовать break для досрочного выхода из цикла.
Давайте посмотрим на быстрый пример:
List names = getNameList(); String name = "John Doe"; int index = 0; for ( ; index < names.length; index++) { if (names[index].equals(name)) { break; } }
Здесь мы ищем имя в списке имен, и мы хотим прекратить поиск, как только мы его нашли.
Обычно цикл завершается, но мы использовали break, чтобы его замкнуть и выйти раньше.
7. Продолжить
Проще говоря, продолжить означает пропустить оставшуюся часть цикла, в котором мы находимся:
List names = getNameList(); String name = "John Doe"; String list = ""; for (int i = 0; i < names.length; i++) { if (names[i].equals(name)) { continue; } list += names[i]; }
Здесь мы не добавляем повторяющиеся имена в список.
Как мы видели здесь, break и continue могут быть удобны при итерации, хотя их часто можно переписать с помощью операторов возврата или другой логики.
8. Заключение
В этой быстрой статье мы узнали, что такое структуры управления и как их использовать для управления потоком данных в наших программах Java.
Весь код, представленный в этой статье, доступен на GitHub.