„Здрасти, Амиго!“
„Днес ще ви разкажа за някои неща, които са удобни при работа с цикли.“
"Първата е ключовата дума break . Ако използвате тази команда в тялото на цикъл, тогава цикълът ще приключи незабавно, когато командата бъде изпълнена. Ето един пример:"
Пример | Изход: |
---|---|
|
0 1 2 3 4 5 |
„Може ли break да се използва само в цикъл?“
"Да. Инструкцията за прекъсване може да се използва само в цикъл. Когато се изпълни команда за прекъсване, цикълът прекратява незабавно."
"Добре, разбрах."
„Страхотно. Сега второто нещо, което искам да споделя, е ключовата дума continue. Тя също може да се използва само в цикъл. Когато тази команда се изпълни, незабавно започва нова итерация на цикъла. С други думи, всеки оставащ code в тялото на цикъла просто се пропуска."
"Ето един пример:"
Пример | Изход: |
---|---|
|
1 3 5 7 9 |
„Значи, след като програмата достигне до команда за продължаване в цикъл, тя спира да изпълнява codeа в цикъла?“
"Не. Вижте, имаме цикъл, когато изпълним един и същ code няколко пъти. В примера по-горе имаме цикъл от 0 до 9, т.е. тялото на цикъла ще бъде изпълнено 10 пъти. Нали?"
— Да.
„Едно преминаване през тялото на цикъла се нарича итерация. Нашият цикъл се състои от 10 итерации – тялото на цикъла ще бъде изпълнено десет пъти.“
— Да, това е ясно.
„ Командата за продължаване прекратява текущата итерация преждевременно, т.е. всеки оставащ code в цикъла се пропуска и започва нова итерация.“
„Ето още един пример:“
ArrayList list = new ArrayList();
for (Object o: list)
{
if (o == null) continue;
System.out.println(o.toString());
}
"В този пример показваме низово представяне на всички обекти в списъка. Но пропускаме всички обекти, които са нулеви."
„Добре, разбрах. Виждам колко удобно е това.“
„Да. Искам да ви разкажа и за етикетите. Те рядко се използват в Java, защото често нарушават красотата на логиката на програмата. Но може да ги срещнете в codeа в даден момент. Така че предпочитам да ви разкажа за отколкото сте чували за тях на детската площадка."
„Веднъж беше позволено да се прескача от всеки ред на всеки ред в codeа. Направихме това с помощта на етикети и командата goto. Ето How изглежда:“
System.out.println("Make cookies,");
label: System.out.println("not");
System.out.println("war");
goto label;
„В този пример, след като се изпълни командата goto label , програмата прескача на реда, отбелязан с етикет .
„По-късно всички помъдряха и решиха да не използват оператора goto . Java не поддържа goto, но goto е запазена дума. Не е голяма работа…“
„Значи няма goto и етикети в Java?“
„Няма оператор goto, но има етикети!“
"Как може да бъде?"
„В Java етикетите могат да се използват с командите за продължаване и прекъсване. Те се използват, когато имате много вложени цикли.“
"Например, да предположим, че имате 5 вложени цикъла и когато дадено condition е изпълнено, искате да излезете от три от тях, но не всички. Етикетите са елегантен начин да направите това:"
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.“
„Колко често се използва това?“
„Честно казано, не често, но никога не се знае. Може би ще го видите някой път. Това са основи на синтаксиса – трябва да знаете всичко това!“
"ОК. Благодаря ти, Билаабо."