«1. Обзор

В этой быстрой статье мы познакомимся с ключевыми словами continue и break в Java и сосредоточимся на том, как их использовать на практике.

Проще говоря, выполнение этих операторов вызывает ветвление текущего потока управления и прерывает выполнение кода в текущей итерации.

2. Оператор break

Оператор break существует в двух формах: без метки и с меткой.

2.1. Unlabeled break

Мы можем использовать оператор unlabeled для завершения цикла for, while или do-while, а также блока switch-case:

for (int i = 0; i < 5; i++) {
    if (i == 3) {
        break;
    }
}

Этот фрагмент определяет цикл for, который должен выполняться пять раз. . Но когда счетчик равен 3, условие if становится истинным, и оператор break прерывает цикл. Это приводит к тому, что поток управления передается инструкции, следующей за концом цикла for.

В случае вложенных циклов немаркированный оператор break завершает только внутренний цикл, в котором он находится. Внешние циклы продолжают выполнение:

for (int rowNum = 0; rowNum < 3; rowNum++) {
    for (int colNum = 0; colNum < 4; colNum++) {
        if (colNum == 3) {
            break;
        }
    }
}

Этот фрагмент содержит вложенные циклы for. Когда colNum равно 3, условие if оценивается как истинное, а оператор break приводит к завершению внутреннего цикла for. Однако внешний цикл for продолжает повторяться.

2.2. Помеченный break

Мы также можем использовать помеченный оператор break для завершения цикла for, while или do-while. Помеченный разрыв завершает внешний цикл.

После завершения поток управления передается оператору сразу после окончания внешнего цикла:

compare: 
for (int rowNum = 0; rowNum < 3; rowNum++) {
    for (int colNum = 0; colNum < 4; colNum++) {
        if (rowNum == 1 && colNum == 3) {
            break compare;
        }
    }
}

В этом примере мы ввели метку непосредственно перед внешним циклом. Когда rowNum равен 1, а colNum равен 3, условие if оценивается как истинное, и оператор break завершает внешний цикл.

Затем поток управления передается оператору, следующему за концом внешнего цикла for.

3. Оператор continue

Оператор continue также существует в двух формах: без метки и с меткой.

3.1. Unlabeled continue

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

int counter = 0;
for (int rowNum = 0; rowNum < 3; rowNum++) {
    for (int colNum = 0; colNum < 4; colNum++) {
        if (colNum != 3) {
            continue;
        }
        counter++;
    }
}

В этом фрагменте кода, когда colNum не равен 3, оператор continue без метки пропускает текущую итерацию, тем самым минуя приращение переменной counter в эта итерация. Однако внешний цикл for продолжает повторяться. Таким образом, приращение счетчика происходит только тогда, когда colNum равно 3 на каждой итерации внешнего цикла for.

3.2. Помеченный continue

Мы также можем использовать помеченный оператор continue, который пропускает внешний цикл. При пропуске поток управления передается в конец внешнего цикла, эффективно продолжая итерацию внешнего цикла:

int counter = 0;
compare: 
for (int rowNum = 0; rowNum < 3; rowNum++) {
    for (int colNum = 0; colNum < 4; colNum++) {
        if (colNum == 3) {
            counter++;
            continue compare;
        }
    }
}

Мы ввели метку непосредственно перед внешним циклом. Всякий раз, когда colNum равен 3, счетчик переменной увеличивается. Помеченный оператор continue вызывает пропуск итерации внешнего цикла for.

Поток управления передается в конец внешнего цикла for, который продолжается на следующей итерации.

4. Заключение

В этом руководстве мы рассмотрели различные способы использования ключевых слов break и continue в качестве операторов ветвления в Java.

Полный код, представленный в этой статье, доступен на GitHub.