Цикли (break і return, continue, мітки) - 1

— Привіт, Аміго!

Сьогодні я розповім тобі про деякі зручні речі в роботі з циклами.

Перша така річ – це ключове слово break. Якщо в тілі циклу написати таку інструкцію, то при її виконанні цикл одразу завершиться. Приклад:

Приклад Результат роботи циклу:
for (int i=0;i<10;i++)
{
System.out.println(i);
if (i>5)
break;
}
0
1
2
3
4
5
6

— А break можна використовувати лише у циклі?

— Так. break можна використовувати лише у циклі. При виконанні команди break цикл відразу завершується.

— Ок. Зрозуміло.

— Чудово. Тепер друга команда – це ключове слово continue. Його теж можна використовувати лише у циклі. При виконанні цієї команди відразу починається нова ітерація циклу. Інакше кажучи, просто пропускається весь код тіла циклу.

Приклад:

Приклад Результат роботи циклу:
for (int i=0;i<10;i++)
{
if (i%2==0)
continue;
System.out.println(i);
}
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.

— І як часто це використовується?

— Якщо чесно, то не часто, але мало. Може, зустрінеш десь. Це основи синтаксису – це треба знати!

— Ок. Дякую, Білаабо.