Автор: Widowmaker1984

Вопросы 20, 21 (операторы break и continue)

"Какой оператор используется для немедленной остановки цикла?"
"Какой оператор используется для перехода к следующей итерации цикла?"


1. Операторы цикла изменяют нормальное выполнение последовательности цикла в Java. Когда выполнение выходит из своей области, все объекты, которые были созданы автоматически в этой области будут уничтожены. Java поддерживает следующие управляющие операторы цикла:
- break
- continue

скрытый текст2. Оператор break завершает работу цикла или оператора switch, и передаёт выполнение следующему оператору, который находится сразу же после цикла или оператора switch. При этом произойдёт моментальный выход из цикла, не будет закончен даже текущий шаг (т. е. если после break присутствовали какие-то ещё операторы, они не выполнятся).

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

2.2. Кроме выхода из цикла, он также может быть использован для завершения последовательности операторов в "ветвях" оператора switch. При этом break, который завершает оператор switch, воздействует только на данный switch-оператор (но не на включающие его циклы).

2.3. В-третьих, break может применяться как «цивилизованная» форма оператора безусловного перехода goto. Java не содержит оператора goto, потому что он выполняет переход произвольным и неструктурированным способом. Код, интенсивно использующий goto, обычно трудно понять и поддерживать. Он также отменяет некоторые оптимизации компилятора. Существует, однако, несколько мест в программе, где goto — ценная и законная конструкция управления потоком выполнения. Например, он может быть полезен, когда вы выходите из глубоко вложенного набора циклов. Чтобы обрабатывать такие ситуации, Java определяет расширенную форму оператора break. Используя ее, вы можете выйти из одного или большего количества блоков кода. Этим блокам не нужно быть частью цикла или оператора switch. Далее, вы можете определить точно, где выполнение будет продолжено, потому что данная форма break работает с меткой и обеспечивает преимущества goto, минуя его проблемы.

2.3.1. Оператор break с меткой имеет следующую общую форму:
break label;

2.3.1.1. Здесь label — имя метки, которая идентифицирует некоторый блок кода. Для именования блока поместите метку в его начале (перед открывающей блок фигурной скобкой). Метка — это любой допустимый идентификатор Java, за которым следует двоеточие. После маркировки блока, его метку можно использовать как аргумент оператора break. Это приведет к тому, что выполнение будет продолжено с конца помеченного блока.

2.3.1.2. Когда эта форма break выполняется, управление передается из именованного блока кода (чья метка указана в операторе break) на следующий за этим блоком оператор. Помеченный блок кода обязательно должен включать данный оператор break, но не требуется, чтобы это включение было непосредственным (т. е. break может включаться не прямо в блок со своей меткой, а во вложенный в него блок, возможно, тоже помеченный). Это означает, что вы можете использовать помеченный оператор break, чтобы выйти из набора вложенных блоков.

3. Оператор continue заставляет цикл пропустить оставшуюся часть его тела, сразу перейти к его следующей итерации. В циклах while или do...while, контроль сразу же переходит в логическое выражение. В цикле for ключевое слово continue распоряжается процессом так, чтобы сразу же перейти к оператору обновления, а затем к проверке условия. По сути это goto-переход мимо следующих операций тела в конец блока цикла.

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

3.2. Как и в операторе break, в continue можно определить метку, указывающую, какой включающий цикл следует продолжить.

4. Кроме break и continue в Java имеется третий оператор управления: return. Он используется для явного возврата из метода, т. е. передает программное управление обратно в вызывающую программу. Оператор return относят к категории операторов перехода. Его можно использовать в любом месте метода для выполнения перехода обратно в вызывающую метод программу. При этом он немедленно заканчивает выполнение метода, в котором он находится.

Комментарии


Лучшее   Правила сайта   Вход   Регистрация   Восстановление пароля

Материалы сайта предназначены для лиц старше 16 лет (16+)