Java продолжить и сломать Ключевые слова

Java продолжить и сломать Ключевые слова

1. обзор

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

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

2. Заявлениеbreak

Операторbreak бывает двух видов: без метки и без метки.

image

2.1. Без названияbreak

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

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

Этот фрагмент определяет циклfor, который должен повторяться пять раз. But when counter equals 3, the if condition becomes true and the break statement terminates the loop. Это приводит к тому, что поток управления передается оператору, который следует после окончания циклаfor.

В случае вложенных цикловan unlabeled break statement only terminates the inner loop that it’s in. Внешние циклы продолжают выполнение:

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

В этом фрагменте есть вложенные циклыfor. When colNum equals 3, the if the condition evaluates to true and the break statement causes the inner for loop to terminate. Однако внешний циклfor продолжает повторяться.

2.2. Помеченоbreak

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

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

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 оценивается какtrue, и операторbreak завершает внешний цикл.

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

3. Заявлениеcontinue

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

image

3.1. Без названияcontinue

Мы можем использовать оператор без метки, чтобы обойти выполнение остальных операторов в текущей итерации циклаfor,while илиdo-while. It skips to the end of the inner loop and continues the loop:

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 продолжает повторяться. Таким образом, увеличениеcounter происходит только тогда, когдаcolNum равно 3 на каждой итерации внешнего циклаfor.

3.2. Помеченоcontinue

Мы также можем использоватьa labeled continue statement which skips the outer loop.. После пропуска поток управления передается в конец внешнего цикла, эффективно продолжая итерацию внешнего цикла:

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, переменнаяcounter увеличивается. Оператор с пометкойcontinue вызывает пропуск итерации внешнего циклаfor.

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

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

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

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