«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.