Рубрики
Без рубрики

Ключевые слова Java continue и break

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

Автор оригинала: baeldung.

1. Обзор

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

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

2. Оператор break

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

2.1. Немаркированный разрыв

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

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

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

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

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

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

2.2. Помеченный разрыв

Мы также можем использовать помеченный оператор 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, а column равен 3, условие if принимает значение true , а оператор break завершает внешний цикл.

Затем поток управления передается оператору после окончания цикла/| for .

3. Оператор continue

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

3.1. Продолжение без маркировки

Мы можем использовать немаркированный оператор, чтобы обойти выполнение остальных операторов в текущей итерации цикла 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++;
    }
}

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

3.2. Маркировка продолжить

Мы также можем использовать помеченный оператор 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 приводит к пропуску итерации цикла outer for .

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

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

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

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