Циклы в Java: for, while, do-while и for-each с примерами

Посчитать сумму покупок, вывести таблицу, обработать тысячу строк файла — всё это задачи для циклов. В Java их четыре вида, и у каждого своя ниша.
Редакция Бинариума
Пишем о профессиях в дизайне, BIM и IT · 6 минут чтения
Из этой статьи вы узнаете:
for — когда известно число повторов
for (int i = 1; i <= 5; i++) {
System.out.println("Шаг " + i);
}Три части в скобках: начальное значение, условие продолжения и шаг. Классический выбор для перебора индексов.
while и do-while
while проверяет условие перед каждым шагом и может не выполниться ни разу. do-while проверяет после — и выполнится минимум один раз.
int balance = 1000;
while (balance > 0) {
balance -= 300;
}
do {
System.out.println("Введите пароль");
} while (!correct);for-each — перебор коллекций
List<String> cities = List.of("Казань", "Самара");
for (String city : cities) {
System.out.println(city);
}Короче и надёжнее, когда индекс не нужен.
Курс Бинариума
Java с нуля — первые программы прямо в браузере
break и continue
| Оператор | Что делает |
|---|---|
| break | Полностью выходит из цикла |
| continue | Пропускает текущую итерацию и переходит к следующей |
for (int n : numbers) {
if (n < 0) continue; // пропускаем отрицательные
if (n == 0) break; // стоп на нуле
sum += n;
}Частые ошибки
- Бесконечный цикл — забыли изменить переменную в условии while.
- Ошибка на единицу — < вместо <= и наоборот.
- Выход за границы массива — индекс должен быть меньше length.
- Удаление элементов в for-each — приводит к исключению.
Главное
- for — для известного числа повторов.
- while — пока условие истинно, do-while — минимум один раз.
- for-each — для перебора коллекций и массивов.
- break выходит из цикла, continue пропускает шаг.
Частые вопросы
Какой цикл самый быстрый?
Разница в скорости обычно несущественна. Выбирайте тот, который делает код понятнее.
Можно ли выйти из вложенного цикла?
Да, с помощью метки и break с её именем, но часто лучше вынести логику в отдельный метод.
Курс Бинариума
Java-разработчик с нуля
Основы языка, ООП и собственный проект.
- 11 недель обучения
- 10+ практических работ
- Проект на GitHub