1. Обзор
В этой быстрой статье мы познакомимся с ключевыми словами continue
и break
в Java и сосредоточимся на том, как их использовать на практике.
Проще говоря, выполнение этих операторов вызывает ветвление текущего потока управления и завершает выполнение кода в текущей итерации.
2. Заявление о перерыве
Оператор break
существует в двух формах: без метки и с меткой.
2.1. Непомеченный перерыв
Мы можем использовать оператор 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
для завершения цикла for
, while
или do-
while. Помеченный break
завершает внешний цикл .
По завершении поток управления передается оператору сразу после окончания внешнего цикла:
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. Без пометки продолжить
Мы можем использовать немаркированный оператор, чтобы обойти выполнение остальных операторов в текущей итерации цикла 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
, который пропускает внешний цикл. При пропуске поток управления передается в конец внешнего цикла, эффективно продолжая итерацию внешнего цикла:
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 .