Структуры управления в Java

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.