Цикл while в Java непрерывно выполняет блок операторов, пока определенное условие не станет истинным. Как только условие становится ложным, цикл while завершается.
Если количество итераций неизвестно в начале, рекомендуется использовать цикл while.
1. Синтаксис
Синтаксис цикла while следующий:
while(condition-expression) {statement(s);}
Условие-выражение должно быть булевым выражением, а операторы могут быть одним простым оператором или блоком из нескольких операторов. Каждый раз, когда условие-выражение оценивается как истинное, выполняется блок операторов.
Оператор while продолжает проверку условного выражения в цикле и выполняет блок до тех пор, пока условное выражение не станет ложным.

- Выполнение начинается с оценки условного выражения.
- Если условие оценивается как истинное, выполняется блок операторов. Это называется итерацией.
- Итерация происходит каждый раз, когда условие истинно.
- Если условие оценивается как ложное, цикл немедленно завершается.
2. Пример цикла While
Давайте разберем цикл while на нескольких примерах.
2.1. Вывести все числа от 1 до N.
Чтобы вывести все целые числа от 1 до 5 с помощью цикла while, мы можем создать условие для локальной переменной counter, которая не должна быть меньше или равна 5.
Как только счетчик достигает 6, цикл завершается.
int counter = 1;while(counter <= 5) {System.out.println(counter);counter++;}
Вывод программы.
12345
2.2. Итерация по списку
Следующая программа Java выполняет итерацию по ArrayList, используя его итератор в цикле while.
List<String> list = List.of("A", "B", "C");Iterator<String> iterator = list.iterator();while(iterator.hasNext()) {System.out.println(iterator.next());}
Вывод программы.
ABC
2.3. Итерация по массиву
Для итерации по массиву, мы должны создать условие по длине массива. Нам нужно итерировать по всем элементам массива, используя счетчик индексов.
Как только индекс достигает длины массива, цикл while завершается.
Integer[] array = new Integer[] {1,2,3,4,5};int index = 0;while(index < array.length) {System.out.println(array[index]);index++;}
Вывод программы.
12345
3. Бесконечный цикл While
Программисты совершают ошибку. Если условное выражение, заданное в цикле while, никогда не завершится, то цикл приведет к бесконечному циклу while. Например, в предыдущей программе, если значение индекса не увеличивалось после каждой итерации, то условие никогда не завершится.
В следующем примере индекс начинается с 0 и проверяется, меньше ли он длины массива. Поскольку мы не увеличиваем его значение, оно всегда будет меньше 5, независимо от того, сколько итераций произойдет. Этот цикл бесконечный.
Integer[] array = new Integer[] {1,2,3,4,5};int index = 0;while(index < array.length) //Infinite Loop because we are not incrementing the index{System.out.println(array[index]);}
Бесконечные циклы иногда приводят к StackOverflowError или OutOfMemoryError в зависимости от того, что мы пытаемся сделать в цикле. Если нет утечек памяти, возможно, что цикл никогда не завершится и будет выполняться бесконечно. В этой ситуации программа зависнет.
4. Разница между циклом While и циклом For
В отличие от оператора for-loop, условное выражение в операторе while loop не является необязательным. В общем случае оператор for-loop может быть преобразован в оператор while-loop. Однако не все операторы for-loop могут быть преобразованы в оператор while-loop.
Ниже приведен псевдокод для написания простого цикла for.
for(initialization; condition-expression; expression-list) {statements;}
Мы можем написать эквивалентную программу, используя цикл while следующим образом:
initialization;while(condition-expression){statements;expression-list;}
5. Цикл While с ключевым словом break
Оператор break используется для выхода из цикла в операторе while-loop. Он полезен для завершения цикла, если определенное условие оценивается во время выполнения тела цикла.
int i = 1;while(true) // Cannot exit the loop from here{if(i <= 5) {System.out.println(i);i++;} else {break; // Exit the loop}}
Просто, не правда ли? Попрактикуйтесь еще, создав несколько программ вокруг оператора цикла while.