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<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 .