«1. Обзор
В самом общем смысле программа представляет собой список инструкций. Управляющие структуры — это программные блоки, которые могут изменить путь, по которому мы проходим через эти инструкции.
В этом руководстве мы рассмотрим управляющие структуры в Java.
Существует три вида управляющих структур:
-
Условные переходы, которые мы используем для выбора между двумя или более путями. В Java есть три типа: if/else/else if, тернарный оператор и переключатель. Циклы, которые используются для перебора нескольких значений/объектов и повторного запуска определенных блоков кода. Основными типами циклов в Java являются for, while и do while. Операторы ветвления, которые используются для изменения потока управления в циклах. В Java есть два типа: break и continue.
2. If/Else/Else If
Оператор 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
Если у нас есть выбор из нескольких случаев, мы можем использовать оператор 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
Нам нужно использовать break для досрочного выхода из цикла.
Давайте рассмотрим быстрый пример:
List<String> names = getNameList();
String name = "John Doe";
int index = 0;
for ( ; index < names.length; index++) {
if (names[index].equals(name)) {
break;
}
}
Здесь мы ищем имя в списке имен и хотим прекратить поиск, как только найдем его.
Цикл обычно завершается, но здесь мы использовали break, чтобы замкнуть его и выйти раньше.
7. Продолжить
Проще говоря, продолжить означает пропустить оставшуюся часть цикла, в котором мы находимся:
List<String> 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.