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 .