JavaRush /Java блог /Java Developer /Циклы в Java
Автор
Pavlo Plynko
Java-разработчик в CodeGym

Циклы в Java

Статья из группы Java Developer

Что такое циклы

Программа, написанная на языке Java, состоит из определенного кода. Обычно он выполняется последовательно: строка за строкой, сверху вниз. Но есть и такие конструкции кода, которые меняют линейное выполнение программы. Их называют управляющими конструкциями. Циклы в Java - 1Благодаря им, код можно выполнять выборочно. Например, запустить один блок кода вместо другого. Циклы — это разновидность управляющих конструкций для организации многократного выполнения одного и того же участка кода. Код внутри такой управляющей конструкции выполняется циклично. Каждое выполнение кода — это итерация цикла. Количество итераций регулируется условием цикла. Код, который выполняется внутри цикла, называют телом цикла. Известны такие виды циклов:
  1. Циклы с предусловием: условие выполнения определяется перед первой итерацией.

  2. Циклы с постусловием: условие выполнения определяется после первой итерации (поэтому они всегда выполняются минимум один раз). Полезны, когда нужно выполнять некое действие, пока не реализуется некое условие: например, считывать ввод пользователя, пока он не введет слово “stop”.

  3. Циклы со счетчиком: количество итераций определяется смоделированным счетчиком. В условии цикла задается его начальное и конечное значение. Каждую итерацию счетчик наращивается. Мы можем заранее определить количество итераций.

    Эти циклы бывают полезны, когда нужно перебрать все элементы в какой-то коллекции. Циклы со счетчиком называют “циклами для...”. “Для каждого элемента некоторой коллекции осуществить следующие действия”.

    Допустимы случаи, когда выполнение цикла можно прервать до достижения его условия. Например, если у нас есть коллекция из 100 чисел и нам необходимо понять, содержит ли она отрицательные числа. Мы можем начать перебор всех чисел, используя цикл “для”. Но когда мы найдем первое отрицательное число, нам не обязательно перебирать оставшиеся числа. Мы можем прервать выполнение цикла, если его дальнейшее выполнение не имеет смысла. Подобные ситуации называют прерыванием цикла.

  4. Безусловные циклы — циклы, которые выполняются бесконечно. Например: “Пока 1=1, печатать “1=1””. Такая программа будет выполняться, пока ее вручную не прервут.

    Данные циклы тоже бывают полезны, когда используются вместе с прерыванием цикла “изнутри”. Используйте их осторожно, чтобы не спровоцировать зависание программы.

    Подробнее с циклами в языке программирования Java можно познакомиться на 4-ом уровне курса JavaRush. В частности, с циклами while и for.

Циклы в Java

Теперь рассмотрим циклы в Java. В этом ЯП их есть несколько типов:
  • while — цикл с предусловием;
  • do..while — цикл с постусловием;
  • for — цикл со счетчиком (цикл для);
  • for each.. — цикл “для каждого…” — разновидность for для перебора коллекции элементов.

while, do.. while и for можно использовать в качестве безусловных циклов. Сравнить синтаксис циклов в разных языках программирования можно на четвертом уровне обучения курса JavaRush. Например циклов for и while. Рассмотрим кратко каждый из представленных типов.

Цикл while

Этот цикл в Java структурно выглядит так:

while (expression) {
     statement(s)
}
Здесь:
  • expression — условие цикла, выражение, которое должно возвращать boolean значение.
  • statement(s) — тело цикла (одна или более строк кода).
Перед каждой итерацией будет вычисляться значение выражения expression. Если результатом выражения будет true, выполняется тело цикла — statement(s). Пример:

public class WhileExample {
    public static void main(String[] args) {
        int countDown = 10;

        while (countDown >= 0) {
            System.out.println("До старта: " + countDown);
            countDown --;
        }

        System.out.println("Поехали !");
        
    }
}
Вывод:

До старта: 10
До старта: 9
До старта: 8
До старта: 7
До старта: 6
До старта: 5
До старта: 4
До старта: 3
До старта: 2
До старта: 1
До старта: 0
Поехали !
Используя while, можно создать бесконечный цикл:

while (true) {
    // тело цикла
}
Чтобы прервать выполнение цикла, используется оператор break. Например:

public class WhileExample {
    public static void main(String[] args) {

        int count = 1;
        while (true) {
            System.out.println("Строка №" + count);
            if (count > 3) {
                break;
            }
            count++; // Без наращивания цикл будет выполняться вечно
        }

    }
}
Вывод:

Строка №1
Строка №2
Строка №3
Строка №4
Попрактиковаться в написании своих циклов можно уже на 4-ом уровне курса JavaRush.

Цикл do..while

Структура do.. while выглядит так:

do {
     statement(s)
} while (expression);
Здесь:
  • expression — условие цикла, выражение, которое должно возвращать boolean значение.
  • statement(s) — тело цикла (одна или более строк кода).
В отличие от while, значение expression будет вычисляться после каждой итерации. Если результатом выражения будет true, в очередной раз выполнится тело цикла — statement(s) (как минимум раз). Пример:

public class DoWhileExample {
    public static void main(String[] args) {
        int count = 1;
        do {
            System.out.println("count = " + count);
            count ++;
        } while (count < 11);
    }
}
Вывод:

count = 1
count = 2
count = 3
count = 4
count = 5
count = 6
count = 7
count = 8
count = 9
count = 10

Цикл for

Этот Java цикл выглядит так:

for (initialization; termination; increment) {
    statement(s)
}
Здесь:
  • initialization — выражение, которое инициализирует выполнение цикла. Исполняется только раз в начале цикла. Чаще всего в данном выражении инициализируют счетчик цикла
  • terminationboolean выражение, которое регулирует окончание выполнения цикла. Если результат выражения будет равен false, цикл for прервется.
  • increment — выражение, которое исполняется после каждой итерации цикла. Чаще всего в данном выражении происходит инкрементирование или декрементирование переменной счетчика.
  • statement(s) — тело цикла.
Выражения initialization, termination, increment опциональны. Если опустить каждое из них, мы получим бесконечный цикл:

// бесконечный цикл
for ( ; ; ) {
    // код тела цикла
}
Пример цикла for:

public class ForExample {

    public static void main(String[] args) {
        for (int i = 1; i < 6; i++) {
            System.out.println("Строка №" + i);
        }
    }
}
Вывод:

Строка №1
Строка №2
Строка №3
Строка №4
Строка №5
Практикум по циклу for представлен на четвертом уровне курса JavaRush.

Цикл for each

Этот цикл Java — разновидность цикла for для итерации коллекций и массивов. Структура for each выглядит так:

for (Type var : vars) {
    statement(s)
}
Здесь:
  • vars — переменная, существующий список или массив
  • Type var — определение новой переменной того же типа (Type), что и коллекция vars.
Данную конструкцию можно прочитать так: “Для каждого var из vars сделать...”. Предположим, у нас есть массив строк из названий дней недели. Выведем каждый элемент этого массива на печать:

public class ForExample {

    public static void main(String[] args) {
        String[] daysOfWeek =
                { "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота", "Воскресенье" };
        
        
        for (String dayOfWeek : daysOfWeek) {
            System.out.println(dayOfWeek);
        }
    }
}
Циклы Java изучаются на курсе JavaRush на четвертом уровне квеста Java Syntax. Попробуйте свои силы в решении задач по этой теме :) Циклы в Java - 2
Комментарии (66)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Dimmonix Уровень 12
20 февраля 2024
Всем привет! Подскажите где подробно почитать о "работе" фигурных скобок в циклах? Очень функциональные знаки, малейшее перемещение и все перестает работать!
Dandie KYT Уровень 10
9 февраля 2024
Отличная статья
Grigoryvvv Уровень 6 Expert
21 января 2024
21.01.24. 4 уровень
Andrei Karavai Уровень 29
24 октября 2023
for each чем то напомнило питон, когда проходил курс по дата-сайнсу, там какой-то похожий итератор использовали.
Anastasiya Khvedchik Уровень 14
6 сентября 2023
Представьте, что у нас есть массив с разными котиками, и мы хотим их всех "покормить". Вот как это может выглядеть на Java с использованием цикла for-each:

public class CatFeeding {

    public static void main(String[] args) {
        // Создаем массив с разными котиками
        String[] cats = { "Мурзик", "Барсик", "Васька", "Том", "Гарфилд" };

        // Перебираем котиков в массиве и "кормим" каждого
        for (String catName : cats) {
            System.out.println(catName + " сыт и счастлив!");
        }
    }
}
Теперь давайте разберем этот код на котиках: У нас есть массив cats, который содержит имена разных котиков. Мы используем цикл for-each, чтобы перебрать каждого котика в массиве. На каждой итерации цикла значение из массива присваивается переменной catName, которая представляет собой имя текущего котика. Для каждого котика мы выводим сообщение на экран, указывая его имя и говоря, что он "сыт и счастлив". Результат выполнения кода будет следующим:

Мурзик сыт и счастлив!
Барсик сыт и счастлив!
Васька сыт и счастлив!
Том сыт и счастлив!
Гарфилд сыт и счастлив!
Никита Уровень 6 Expert
20 апреля 2023
круто) тут только засчет практики постоянной научишься всё это понимать)))) спасибо за лекцию и материал
Anatoly Уровень 30
19 апреля 2023
^-^
Ислам Уровень 33
24 марта 2023
perfect
BrainLucker 👽 Уровень 27
16 февраля 2023

int likes = 0;
System.out.println("Накиньте лайков, плиз! :)");
while (!achievement.isEarned()) {
    if (comments.hasGoodGuy() && button.isPressed()) {
        System.out.println("Спасибо, бро!");
        likes++;
    } else {
        System.out.println("Нет? Ну, стоило попытаться :/");
    }
}
tryufell Уровень 23
11 февраля 2023
Про for each цикл еще важен момент, что он не подходит для присваивания новых значений переменным в массиве! Значение присвоится только созданной в цикле переменной var, но сам массив останется без изменений