— Привет, Амиго!
Сегодня я тебе расскажу про некоторые удобные вещи в работе с циклами.
Первая такая вещь – это ключевое слово break. Если в теле цикла написать такую инструкцию, то при ее выполнении цикл сразу завершится. Пример:
Пример | Результат работы цикла: |
---|---|
|
0 1 2 3 4 5 6 |
— А break можно использовать только в цикле?
— Да. break можно использовать только в цикле. При выполнении команды break цикл тут же завершается.
— Ок. Понятно.
— Отлично. Теперь вторая команда – это ключевое слово continue. Его тоже можно использовать только в цикле. При выполнении этой команды, сразу начинается новая итерация цикла. Другими словами, просто пропускается весь код тела цикла.
Пример:
Пример | Результат работы цикла: |
---|---|
|
1 3 5 7 9 |
— Т.е. как только программа доходит до исполнения команды continue внутри цикла, она перестает выполнять код в нем?
— Нет. Смотри. Цикл – это когда мы выполняем один и то же код несколько раз. В примере выше – у нас цикл от 0 до 9 – т.е. тело цикла выполнится 10 раз. Так?
— Да.
— Одно такое исполнение кода тела цикла называется итерацией цикла. Наш цикл состоит из 10 итераций – десяти исполнений кода в его теле.
— Да, это ясно.
— Команда continue преждевременно завершает текущую итерацию — код внутри цикла пропускается и начинается новая итерация.
Вот тебе еще пример:
ArrayList list = new ArrayList();
for (Object o: list)
{
if (o==null) continue;
System.out.println(o.toString());
}
В данном примере мы выводим на экран строковое представление всех объектов, содержащихся в списке list. Но пропускаем все объекты, которые равны null.
— Да, ясно. Очень удобная штука, я смотрю.
— Ага. Еще хочу рассказать тебе про метки. Они редко используются в Java, т.к. часто нарушают красоту логики программы. Но ты можешь встретить их где-то в коде. Так что лучше пусть ты от меня услышишь о них, чем где-то во дворе.
Давным-давно в коде разрешалось прыгать с любой строчки на любую. Для этого использовались метки и оператор goto. Вот как это выглядело:
System.out.println("Мир");
label: System.out.println("Труд");
System.out.println("Май");
goto label;
В данном примере, после выполнении команды goto label, программа прыгала на строку, обозначенную меткой label.
Потом все дружно прозрели и решили не использовать оператор goto. В Java его до сих пор нет, но ключевое слово goto зарезервировано. Мало ли…
— Т.е. ни goto, ни меток в Java нет?
— Оператора goto нет, а метки есть!
— Это как же это?
— Метки можно использовать в Java вместе с командами continue и break. Они используются, когда у тебя много вложенных циклов.
Например, у тебя 5 вложенных циклов и ты хочешь, при выполнении некоторого условия, выйти из трех из них, но не из всех. Метки позволяют сделать это красиво:
label1: for (int i=0;i<10;i++)
label2: for (int j=0;j<10;j++)
label3: for (int k=0;k<10;k++)
if (i==j && j==k)
break label2;
В данном примере, при выполнении команды break, мы выйдем не из цикла с переменной k, а из цикла помеченного меткой label2 – т.е. выйдем сразу из двух циклов k и j.
— И как часто это используется?
— Если честно, то не часто, но мало ли. Может, встретишь где-нибудь. Это основы синтаксиса – это все надо знать!
— Ок. Спасибо, Билаабо.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ