Оператор break

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

  • Для завершения последовательности операторов в операторе switch, что было рассмотрено в Оператор switch.
  • Его можно использовать для выхода из цикла.
  • Можно применять в качестве "цивилизованной" формы оператора безусловного перехода goto.

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

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

public class BreakLoop1 {
    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 для выхода из внутреннего цикла

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

public class BreakLoop2 {
    public static void main(String[] args) {
        for (int i = 0; i < 3; i++) {
            System.out.print("Пpoxoд " + 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 BreakLoop3 {
    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 c меткой используется для выхода из внутреннего цикла, как показано в этом примере:

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

 

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

Read also:
Trustpilot
Trustpilot
Comments