Найти в Дзене

Операторы break и continue — что это? Оператор break в Java

Оглавление
Статья подготовлена для студентов курса «Разработчик Java» в образовательном проекте OTUS.

Оператор break применяется для прерывания текущей итерации (break (broke, broken) — ломать, разрывать). С его помощью происходит выход из блока фигурных скобок оператора цикла либо оператора switch с дальнейшей передачей управления следующему оператору. Если задействуются вложенные операторы, break обеспечивает выход из самого внутреннего оператора.

Общая форма оператора break (брейк) выглядит следующим образом:

-2

Оператор break с меткой. Специфика использования. Ключевое слово goto

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

В общем виде оператор break выглядит так:

-3

Здесь labelName — не что иное, как имя метки, соответствующее кодовому блоку. Под кодовым блоком понимается набор операторов, которые взяты в фигурные скобки { }.

Когда присутствует оператор break с меткой, осуществляется переход к метке для её реализации в программе.

Объявление:

-4

В каких операторах используют оператор break?

Оператор break подходит для применения в операторе switch и во всех операторах цикла. Иными словами, break нельзя использовать за пределами цикла либо оператора switch.

Оператор continue. Общая форма и особенности применения

Оператор continue используется в циклах, обеспечивая переход в цикле к следующей итерации. Общая форма оператора выглядит соответствующим образом:

-5

Как правило, continue вызывается в том случае, если достигнуто некоторое условие в теле цикла.

Оператор continue с меткой

Как и в случае с break, возможна реализация continue с меткой. В этом случае форма оператора будет выглядеть так:

-6

Здесь labelName — это имя метки, соответствующей циклу, в котором как раз таки и реализован вызов посредством оператора continue.

Когда применяют оператор continue?

Оператор используют исключительно в циклах, то есть continue нельзя применять за их пределами.

Преимущества использования операторов continue и break в программах

Применение break и continue имеет следующие плюсы:

— при выполнении циклического процесса отпадает необходимость осуществлять излишние итерации, если нужный результат достигнут либо искомое значение уже найдено. Всё это повышает скорость работы программного обеспечения;

— в случае преждевременного прекращения циклического процесса структура кода не искажается.

Каковы отличия между break и continue при наличии метки?

Операторы continue/break с меткой используются в том случае, если в программе присутствуют вложенные циклы. При этом break с меткой обеспечивает полный выход изо всех вложенных циклов. А continue с меткой выходит из текущего вложенного цикла с последующим переходом к очередной итерации внешнего цикла.

Примеры решения задач с break

Пример 1. Давайте определим, есть ли отрицательное число в одномерном массиве:

-7

Пример 2. Давайте найдём, есть ли заданное число n в 2-мерном массиве, размер которого 2 х 3. Здесь break вызывается дважды:

1) когда требуется выйти из внутреннего цикла, в котором переменная j является итератором;

2) когда нужно покинуть внешний цикл, где итератором является переменная i.

-8

Очевидно, что если наш 2-мерный массив будет огромным по размеру, использование break повысит скорость выполнения циклического процесса.

Пример 3. Рассмотрим работу break с меткой. Здесь break работает так же, как и goto в других языках программирования. Как мы уже говорили, в Java это ключевое слово зарезервировано, однако вместо goto применяется оператор break с меткой и рядом ограничений.

Итак, задан 2-мерный массив целых чисел. Давайте определим, есть ли в нём отрицательные элементы:

-9

В нашем случае перебор всех элементов 2-мерного массива производится в 2-х вложенных циклах. При этом перед вызовом циклов помещена метка M1. Если же в цикле нижнего уровня (счетчик j) встречается команда break M1, то производится выход с обоих циклов с последующим переходом к очередному оператору программы:

-10

А вот если M1 разместить непосредственно перед оператором if:

-11

То компилятор в Java выдаст ошибку:

-12

А всё потому, что метка здесь может размещаться лишь перед тем циклом, в котором используется.

Сергей Петрелевич — Java-разработчик в Технологическом центре Deutche Bank и преподаватель курса «Разработчик Java» в OTUS
Сергей Петрелевич — Java-разработчик в Технологическом центре Deutche Bank и преподаватель курса «Разработчик Java» в OTUS