Условия и циклы ·
‹ Предыдущий Следующий ›
⏱ 5 минут чтения Обновлено: 2026-07-12

Оператор continue в Java

Оператор continue в Java досрочно завершает текущую итерацию цикла: операторы, оставшиеся до конца тела цикла, пропускаются, и управление переходит к следующей итерации. Сам цикл при этом не прерывается — в отличие от оператора break, который завершает цикл полностью.

Как работает continue в for, while и do-while

В циклах while и do-while оператор continue передаёт управление непосредственно условному выражению, управляющему циклом. В цикле for управление сначала переходит к итерационной части (например, i++), а затем к условному выражению.

Тип цикла Куда переходит управление после continue
for Сначала к итерационному выражению (i++), затем к проверке условия
while Сразу к проверке условия в начале цикла
do-while К проверке условия в конце цикла

Оператор continue допустим только внутри цикла. Если написать его вне цикла, компилятор выдаст ошибку continue outside of loop.

Частая ошибка

В цикле while инкремент счётчика находится в теле цикла. Если continue сработает раньше строки с инкрементом, счётчик не изменится и условие будет проверяться с тем же значением — получится бесконечный цикл. В цикле for такой проблемы нет: итерационное выражение выполняется всегда.

Пример: вывод только нечётных чисел

В следующем примере на консоль выводятся только нечётные значения. Если значение чётное, оператор continue досрочно завершает текущую итерацию, и System.out.print не выполняется:

public class ContinueExample {
    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            if (i % 2 == 0) {
                continue;
            }
            System.out.print(i + " ");
        }
    }
}

Результат выполнения программы:

1 3 5 7 9

Оператор continue с меткой

Оператор continue также может использоваться с меткой — это позволяет завершить текущую итерацию не внутреннего, а внешнего цикла. В следующем примере внешний цикл помечен меткой outer. При достижении строки continue outer; завершается итерация внешнего цикла. Без метки завершалась бы итерация внутреннего цикла:

public class ContinueLabelExample {
    public static void main(String[] args) {
        outer:
        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 10; j++) {
                if (j > i) {
                    System.out.println();
                    continue outer;
                }
                System.out.print(" " + (i * j));
            }
        }
        System.out.println();
    }
}

Программа выводит «треугольник» произведений i * j: как только j становится больше i, строка завершается и начинается следующая итерация внешнего цикла:

 0
 0 1
 0 2 4
 0 3 6 9
 0 4 8 12 16
 0 5 10 15 20 25
 0 6 12 18 24 30 36
 0 7 14 21 28 35 42 49
 0 8 16 24 32 40 48 56 64
 0 9 18 27 36 45 54 63 72 81

Метка должна стоять непосредственно перед тем циклом, к которому относится continue. Меткой может быть любой допустимый в Java идентификатор с двоеточием.

Чем continue отличается от break

Оба оператора относятся к операторам перехода, но действуют по-разному: continue пропускает оставшуюся часть текущей итерации и продолжает цикл, а break завершает цикл полностью — выполнение продолжается с первого оператора после цикла. Подробное сравнение break, continue и return — в уроке Оператор break в Java.

Часто задаваемые вопросы

Что делает оператор continue в Java?

Он пропускает оставшуюся часть тела цикла в текущей итерации и переходит к следующей: в while и do-while — сразу к проверке условия, в for — сначала к итерационному выражению, затем к условию. Цикл при этом продолжает работать.

Можно ли использовать continue вне цикла или внутри switch?

Вне цикла — нельзя: компилятор выдаст ошибку «continue outside of loop». Если switch находится внутри цикла, то continue в ветке case допустим и относится к циклу, а не к switch — в отличие от break, который завершил бы только switch.

Когда нужен continue с меткой?

Когда во вложенных циклах требуется завершить итерацию внешнего цикла, а не внутреннего. Обычный continue действует только на ближайший охватывающий цикл; continue outer; переводит выполнение к следующей итерации цикла, помеченного меткой outer.

Ухудшает ли continue читаемость кода?

Один continue в начале тела цикла для отсева неподходящих значений обычно делает код чище, чем большой вложенный if. Проблемы начинаются, когда continue разбросаны по длинному телу цикла или используются с метками без необходимости — в таких случаях лучше вынести логику в отдельный метод.

Презентация с видео на Patreon →

Видео объяснение

Предпочитаете видеоформат? Посмотрите этот урок с примерами и объяснениями.

Комментарии

Зарегистрируйтесь или войдите, чтобы иметь возможность оставить комментарий.