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

Оператор break в Java

В Java нет оператора goto, но есть три оператора перехода: break, continue и return. Они передают управление в другую часть программы. В этом уроке подробно разберём оператор break.

Оператор языка Java break может применяться в следующих случаях:

  • Для завершения последовательности операторов в операторе switch, что было рассмотрено в уроке Оператор switch.
  • Для досрочного выхода из цикла.
  • В качестве «цивилизованной» формы оператора безусловного перехода goto (break с меткой).

Применение оператора break для выхода из цикла

Рассмотрим пример применения оператора break для выхода из цикла while. По условию цикл while должен выполниться 100 раз. Если при какой-то непредвиденной ситуации мы хотим выйти раньше, используется оператор break.

public class BreakLoopExample1 {
    public static void main(String[] args) {
        int i = 0, n = 100;

        while (i < n) {
            if (i == 10) {
                break;
            }
            System.out.println("i: " + i++);
        }
        System.out.println("Цикл завершен.");
    }
}

Следует отметить, что оператор break не предназначен служить обычным средством выхода из цикла — для этого есть условное выражение самого цикла. Break стоит применять для выхода из цикла только в особых случаях. Кроме того, break без метки допустим только внутри цикла или оператора switch — в любом другом месте компилятор выдаст ошибку break outside switch or loop.

Неочевидный момент

Если оператор switch находится внутри цикла, то break внутри него завершает только switch, а не цикл. Чтобы из ветки case выйти сразу из цикла, понадобится break с меткой — на этом часто ошибаются на собеседованиях.

Break во вложенных циклах

Если в программе применяется ряд вложенных циклов, то оператор break осуществляет выход только из самого внутреннего цикла. Например:

public class BreakLoopExample2 {
    public static void main(String[] args) {
        for (int i = 0; i < 3; i++) {
            System.out.print("Проход " + i + " : ");
            for (int j = 0; j < 100; j++) {
                if (j == 10) {
                    break;
                }
                System.out.print(j + " ");
            }
            System.out.println();
        }
        System.out.println("Циклы завершены");
    }
}

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

Проход 0 : 0 1 2 3 4 5 6 7 8 9
Проход 1 : 0 1 2 3 4 5 6 7 8 9
Проход 2 : 0 1 2 3 4 5 6 7 8 9
Циклы завершены

В цикле можно использовать больше одного оператора break, но это ухудшает читаемость кода — лучше так не делать.

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

Рассмотрим применение оператора break с меткой. Этот вариант может использоваться в качестве цивилизованной формы оператора goto, которого нет в языке Java в отличие от некоторых других языков программирования.

Общая форма оператора break с меткой:

break метка;

Здесь метка — это имя метки, обозначающее блок кода. Им может быть как самостоятельный блок кода, так и целевой блок другого оператора. Чтобы пометить блок, достаточно поместить в его начале метку.

Метка — это любой допустимый в Java идентификатор с двоеточием.

Break с меткой для выхода из вложенных циклов

В следующем коде три блока кода отмечены метками first, second, third. При достижении строки break second; мы выходим из блока second.

public class BreakLoopExample3 {
    public static void main(String[] args) {
        boolean t = true;
        first:
        {
            second:
            {
                third:
                {
                    System.out.println("Перед break.");
                    if (t) {
                        break second;
                    }
                    System.out.println("Этот код не будет выполнен.");
                }
                System.out.println("Этот код не будет выполнен.");
            }
            System.out.println("После второго блока.");
        }
    }
}

Результат выполнения кода:

Перед break.
После второго блока.

Чаще всего break с меткой используется для выхода сразу из нескольких вложенных циклов, как показано в этом примере:

public class BreakLoopExample4 {
    public static void main(String[] args) {
        outer:
        for (int i = 0; i < 3; i++) {
            System.out.print("Проход " + i + " : ");
            for (int j = 0; j < 100; j++) {
                if (j == 10) {
                    break outer; // выход из обоих циклов
                }
                System.out.print(j + " ");
            }
            System.out.println("Эта строка не будет выводиться");
        }
    }
}

Важное ограничение: метка должна стоять непосредственно перед тем блоком или циклом, из которого выполняется выход. «Прыгнуть» в произвольное место программы, как это делает настоящий goto, break с меткой не может.

Сравнение break, continue и return

Break — не единственный оператор перехода в Java. Сравним его с continue и return:

Оператор Что делает Где допустим
break Полностью завершает цикл или switch; с меткой — помеченный блок Внутри цикла или switch
continue Пропускает оставшуюся часть текущей итерации и переходит к следующей Только внутри цикла
return Завершает выполнение всего метода и возвращает управление вызывающему коду В любом месте метода

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

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

Break полностью завершает цикл — выполнение продолжается с первого оператора после цикла. Continue завершает только текущую итерацию: управление переходит к проверке условия (в while) или к выражению итерации (в for), и цикл продолжается.

Как выйти сразу из нескольких вложенных циклов?

Обычный break завершает только внутренний цикл. Для выхода из внешнего используйте break с меткой (break outer;) либо вынесите вложенные циклы в отдельный метод и завершите его оператором return — второй вариант часто читается лучше.

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

Нет. Break без метки допустим только внутри цикла или оператора switch, иначе компилятор выдаст ошибку «break outside switch or loop». Break с меткой можно применять и к обычному помеченному блоку кода.

Break с меткой — это то же самое, что goto?

Нет. Goto позволяет перейти в произвольное место программы, а break с меткой — только выйти из помеченного блока или цикла, внутри которого он находится. Перейти «вперёд» или в чужой блок нельзя, поэтому такой код остаётся структурированным.

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

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

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

Комментарии

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