Java циклы: for, for-each, while, do-while

Author: Tatyana Milkina
  1. Виды циклов в Java
  2. Цикл while
  3. Цикл do-while
  4. Цикл for
  5. Цикл for-each

1. Виды циклов в Java

Циклы — это многократно повторяющийся фрагмент программы.

В Java существует два типа циклов: типа «пока» и типа «n-раз».

Первый тип «пока» предназначен для повторения какого-то действия до тех пор, пока выполняется некоторое условие. Пример: увеличивать число на 5 до тех пор, пока оно не станет трёхзначным. Это циклы while и do-while:

1. while (boolexpr) { /*операторы*/ } 
2. do { /*операторы*/ } 
   while (boolexp); 

Второй тип «n-раз» предназначен для повторения каких-то действий заранее известное количество раз. Пример: умножить число само на себя 4 раза. Это циклы for и for-each.

3. for(инициализация; условие; итерация){ /*операторы*/ }
4. for(тип итерационная_переменная: массив){ /*операторы*/ } 

Условие завершения цикла должно быть очевидным, чтобы цикл не «сорвался» в бесконечный цикл.

Рассмотрим каждый из этих циклов:

2. Цикл while в Java

Цикл while - это цикл типа "пока".

Он используется в случае, когда один фрагмент кода должен выполняться, пока выполняется какое-то условие.

Рассмотрим синтаксис на следующем примере.

После ключевого слова while в круглых скобочках указывается выражение, которое должно возвращать значение типа booleanэто условие цикла. Далее в фигурных скобочках указываем тело цикла - код, который будет повторяться, пока условие цикла возвращает значение true. Пока выполняется условие n>0будет выполняться System.out.println. Мы видим, что переменная n меняется внутри тела цикла, что позволяет в конце концов выйти из него. 

public class WhileExample1 {
    public static void main(String[] args) {
        int n = 10;
        while (n > 0) {
            System.out.println("Тик " + n--);
        }
    }
}

Условие цикла while проверяется перед выполнением тела цикла. В этом главное отличие цикла while от do-while.

Следующий пример показывает вариант использования цикла while без тела. Даны два числа 100 и 200 и необходимо найти середину между ними. Значение i увеличивается на 1 каждую итерацию цикла, а j уменьшается до тех пор, пока они не станут равны. Изменение i и j происходит в условии цикла, поэтому тело цикла не нужно. Вместо тела просто ставится точка с запятой.

public class NoBodyExample {
    public static void main(String[] args) {
        int i = 100;
        int j = 200;        // найти середину между i и j
        while (++i < --j) ; // цикл без тела
        System.out.println("Середина: " + i);
    }
}
Цикл while может применяться для организации бесконечных циклов в виде while(true):
public class EndlessLoopExample {
    public static void main(String[] args) {
        int i = 0;
        while (true) {
            System.out.println(i++);
        }
    }
}

3. Цикл do-while

Цикл do-while похож на цикл while - это тоже цикл типа «пока», у него так же есть тело и условие, которые пишется после тела. Единственное отличие цикла do-while от while - условие проверяется после выполнения тела. Тело do-while выполнится хотя бы раз, даже если условие возвращает значение false.

Пример цикла do-while:

public class DoWhileExample {
    public static void main(String[] args) {
        int n = 10;
        do {
            System.out.println("Тик " + n--);
        } while (n > 0);
    }
}

4. Цикл for

Цикл for используется в Java в случаях, когда необходимо несколько раз выполнить блок кода и точно известно количество этих повторений.

Общая форма цикла for:

for(инициализация; условие; итерация){/*операторы*/ }

Пример цикла for:

public class ForTickExample {
    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            System.out.println("Тик " + i);
        }
    }
}

В первом параметре обычно выбирают какую-то переменную, с помощью которой будет подсчитываться количество повторений цикла. Её называют счетчиком. Эту переменную обычно называют i. Счётчику задают некоторое начальное значение. Для цикла for в джава не рекомендуется в цикле изменять индекс цикла.

Во втором параметре указывают некоторое ограничение на счётчик (указывают, до какого значения он будет изменяться).

В третьем параметре указывают выражение, изменяющее счётчик после каждого шага цикла. Обычно это инкремент или декремент, но можно использовать любое выражение, где счётчику будет присваиваться некоторое новое значение.

Перед каждым шагом цикла (но после инициализации) проверяется условие повторения, если оно истинно, то в очередной раз выполняется тело цикла. При этом, тело цикла может не выполниться ни разу, если условие будет ложным в момент первой же проверки.

В первом параметре можно через запятую инициализировать несколько переменных, как это показано в следующем примере:

public class ForExample{
    public static void main(String[] args) {
        for (int i = 1, j = 4; i < j; i++, j--) {
            System.out.println("i = " + i);
            System.out.println("j = " + j);
        }
    }
}

5. Цикл for-each

Цикл языка Java foreach - это разновидность цикла for, которая используется для перебора элементов массивов и коллекций. Его запись более простая, чем у цикла for. Везде, где это возможно, используйте цикл foreach вместо for.

Общая форма:

for(тип итерационная_переменная: массив){ /*операторы*/ }
Рассмотрим пример использования foreach.
В следующем примере при прохождении цикла переменной str автоматически присваивается значение, равное значению следующего элемента массива args:
public class ForEachExample {
    public static void main(String[] args) {
        for (String str : args) {
            System.out.println("Значение: " + str);
        }
    }
}

 

Презентацию с видео можно скачать на Patreon.

Курс 'Java для начинающих' на Udemy Курс 'Java для начинающих' на Udemy
Читайте также:
Комментарии
marco8993
Nov 2, 2022
добрый день. бекэнд этого сайта тоже написан на Java? если да, то скиньте пожалуйста исходный код (желательно ссылку на GitHub). Заранее спасибо