Break и continue
Внутри тела любой инструкции итераций вы также можете использовать управление течением цикла, используя break и continue. break прерывает цикл без выполнения оставшихся инструкций в цикле. continue останавливает выполнение текущей итерации и возвращается к началу цикла, начиная следующую итерацию.
Эта программа показывает пример для break и continue внутри циклов for и while:
//: c03:BreakAndContinue.java
// Демонстрирует break и continue.
public class BreakAndContinue { public static void main(String[] args) { for(int i = 0; i < 100; i++) { if(i == 74) break; // вызод из цикла for
if(i % 9 != 0) continue; // Следующая итерация
System.out.println(i); } int i = 0; // "Бесонечный цикл":
while(true) { i++; int j = i * 27; if(j == 1269) break; // Выход из цикла
if(i % 10 != 0) continue; // В начало цикла
System.out.println(i); } } } ///:~
В цикле for значение i никогда не дойдет до 100, потому, что инструкция break прервет выполнение цикла, когда i будет равно 74. Обычно, вы будете использовать break как здесь, если вы не будете знать когда возникнет прерывающее условие. Инструкция continue влечет за собой возврат к началу цикла (при этом инкрементируя i) в любом случае, когда i не делится на 9 без остатка. Если это так, значение печатается.
Второй раздел показывает “бесконечный цикл”, который, теоретически, никогда не закончится. Однако, внутри цикла есть инструкция break, которая оборвет цикл. Дополнительно, вы увидите, что continue возвращает назад к началу цикла не завершив оставшегося. (Таким образом печать происходит во втором цикле только когда значение i делится на 10.) Вот результаты:
0 9 18 27 36 45 54 63 72 10 20 30 40
Значение 0 печатается, потому что 0 % 9 равно 0.
Вторая форма бесконечного цикла: for(;;). Компилятор трактует и while(true) и for(;;) одинаково, что бы вы не использовали - это вопрос стиля программирования.