Цикл Java

🔥 🚀 Важно для всех, кто работает с Java! 🔥
На JavaRocks ты найдешь уникальные туториалы, практические задачи и редкие книги, которых не найти в свободном доступе. Присоединяйся к нашему Telegram-каналу JavaRocks — стань частью профессионального сообщества!

Однажды Марк Цукерберг отметил, что компьютеры действительно хороши в повторении команд. Для человека это непросто, мы устаем от повторения одного и того же много раз подряд, но компьютер может делать это миллионы и миллиарды раз и никогда не надоедает. Если вы попытаетесь разослать поздравления всем пользователям Facebook, то вам просто не хватит ни времени, ни сил, чтобы справиться с такой задачей. Однако вы можете поручить эту задачу компьютеру, написав несколько строк кода. Именно так работают циклы. С их помощью можно поручить рутину компьютеру вместо того, чтобы делать все вручную.

Основной цикл в Java – это так называемый определенный цикл или цикл for.

Как написать цикл for в Java? Общая форма цикла for

Цикл For выполняет набор инструкций определенное количество раз. Например, написать пятьдесят раз “Я не должен быть таким, хо-хо-хо” или разослать приглашения всем своим друзьям – типичные задачи для этого вида цикла.

Синтаксис наиболее распространенного варианта цикла for:

for ([counter initialization]; [checking conditions]; [changing of the counter])
{
    // инструкции
}
Run Code

Сначала инициализация выполняется один раз, затем проверяется условие – оно должно быть логическим (boolean).

  • Когда цикл только запускается, выполняется инициализация счетчика.
  • Как только условие становится ложным, цикл прекращает свою работу.

Как правило, изменение счетчика происходит после каждой итерации. Обычно используется инкремент (++) или декремент (--).

Вы можете пропустить любое из трех выражений цикла (инициализация, проверка условия, изменение счетчика). Условие цикла проверяется перед следующим шагом цикла. Если условие ложно, программа выходит из цикла и продолжает выполнение инструкции, следующей за конструкцией for.

Здесь представлена блок-схема цикла for.

Как использовать цикл for в Java. Простой пример.

Вот конкретный пример цикла Java for. Давайте десять раз напишем “Hello!”. Строка каждый раз будет с новой строки с номером этой строки. Мы должны получить следующий вывод:

  1. Hello!
  2. Hello!
  3. Hello!
  4. Hello!
  5. Hello!
  6. Hello!
  7. Hello!
  8. Hello!
  9. Hello!
  10. Hello!

Вот наша Java-программа, которая решает эту задачу:

public class ForExample {
   public static void main(String[] args) {
       for (int i = 0; i < 10; i++) {
           System.out.println(i + 1 + ". Hello!");
       }
   }
}
Run Code

Как это работает?

Шаг 1. Счётчик i = 0. Цикл проверяет условие i < 10. Условие истинно — значит, тело цикла выполняется. Печатается строка "1. Hello!". Почему 1? Потому что i + 1, а мы начали счёт с нуля. После этого i увеличивается на 1 — теперь i = 1.

Шаг 2. i = 1. Условие i < 10 по-прежнему выполняется. Выводится "2. Hello!", так как i + 1 = 2. Счетчик снова увеличивается: i = 2.

Шаг 10. i = 9. Цикл всё ещё выполняется, выводим "10. Hello!". Затем i увеличивается до 10.

Шаг 11. i = 10. Условие i < 10 больше не выполняется. Цикл завершает свою работу.


Цикл While и цикл for: различия и сходства

В Java бесконечный цикл while выполняется непрерывно, выполняется до тех пор, пока логическое условие возвращает true.

Синтаксис цикла while:

while (boolean condition)
       {
            loop statements...
       }
Run Code

Во многих случаях вы сами можете выбрать, какой цикл использовать – for или while. Иногда они настолько похожи, что работают одинаково. Например, вот та же задача (вывести слово “Hello!” десять раз с номером строки), но написанная с использованием while:

public class ForAndForEach {
   public static void main(String[] args) {
       int j = 0;  // используем счетчик
       while (j < 10) {
           System.out.println(j + 1 + ". Hello!");
           j++;
       }
   }
}
Run Code

Однако профессиональные программисты не очень любят цикл while, и везде, где это возможно, стараются использовать цикл for.

for и while – в чем разница?

forwhile
Используется, когда заранее известное число повторений.Используется, когда количество повторений заранее неизвестно.
Инициализация, проверка условий и изменение счетчика уже зашиты в синтаксис циклаИнициализация и проверка условий внутри цикла. Счетчик при необходимости добавляется вручную.
Бесконечный цикл:
for (;;) {
System.out.println("working…");
}
Бесконечный цикл:
while (true) {
System.out.println("working…");
}

Как выйти из цикла for в Java

Обычно цикл for выполняется как поток, и естественный способ выйти из цикла — когда условие принимает ложное значение. Но в Java есть два управляющих оператора – break и continue, которые позволяют выйти из цикла раньше, не дожидаясь, пока условие станет ложным:

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

Давайте решим следующую задачу, используя break и continue. У нас есть массив имен, и мы говорим привет всем из этого массива, кроме незнакомцев. Так что если мы встречаем строку «Stranger» во время нашего цикла, мы выходим из него (уходим и больше ни с кем не здороваемся).

Используем break:

public class ForBreakExample {
   public static void main(String[] args) {
       String[] names = {"Mike", "Dustin", "Stranger", "Lucas", "Will"};
       for (int i = 0; i < names.length; i++) {
// как выйти из цикла for, если в массиве встречается "Stranger"
if (names[i].equals("Stranger")) {
               System.out.println("I don't chat with strangers");
               break;
           }
           System.out.println("Hello," + names[i]);
       }
   }
}
Run Code

Результат выполнения нашей программы:

Hello,Mike
Hello,Dustin
I don't chat with strangers

Видите? Мы вышли из цикла, прежде чем поприветствовать Лукаса и Уилла.

Теперь давайте используем continue. На этот раз мы просто пропустим незнакомца, но продолжим цикл и поздороваемся со всеми остальными:

public class ForContinueExample {
   public static void main(String[] args) {
       String[] names = {"Mike", "Dustin", "Stranger", "Lucas", "Will"};
       for (int i = 0; i < names.length; i++) {
           if (names[i].equals("Stranger")) {
               System.out.println("I don't chat with strangers");
               continue;
           }
           System.out.println("Hello," + names[i]);
       }
   }
}
Run Code

Результат:

Hello,Mike
Hello,Dustin
I don't chat with strangers
Hello,Lucas
Hello,Will

Отлично! Мы поздоровались со всеми друзьями, но проигнорировали незнакомца. 🙂

Расширенная версия цикла for – цикл for-each

For-each — это разновидность цикла for, который используется, когда нужно обработать все элементы массива или коллекции. Кстати, в самом синтаксисе слово for-each не используется – это просто удобное название.

Синтаксис следующий:

for (type itVar: array)
{
    Block of operators;
}
Run Code
  • type – тип элементов в массиве (он же тип переменной цикла),
  • ItVar – имя переменной, которая будет поочередно принимать значения элементов,
  • array – сам массив, либо, например, список (ArrayList) или другая коллекция.

Обратите внимание: в этом цикле нет счетчика, переменная сразу перебирает элементы массива, а не их индексы.

Как работает цикл:

  • При каждом проходе по циклу переменной присваивается очередной элемент из массива или коллекции.
  • Затем выполняется блок кода, указанный в теле цикла.

Внимание: цикл for-each можно применять к массивам и любым классам, реализующим интерфейс java.lang.Iterable.

Решим ту же задачу с приветствием друзей, игнорируя незнакомцев (“Stranger”), но на этот раз воспользуемся циклом for-each.

public class ForEachExample {
   public static void main(String[] args) {
       String[] names = {"Mike", "Dustin", "Stranger", "Lucas", "Will"};
	// пример for-each цикла на Java
       for (String name : names) {
           if (name.equals("Stranger")) {
               System.out.println("I don't chat with strangers");
               continue;
           }
           System.out.println("hello, " + name);
       }
   }
}
Run Code

Отличная практика! 🙂 Мы снова поприветствовали всех друзей, проигнорировав незнакомца, но сделали это в более лаконичной форме с помощью for-each.

Чтобы закрепить материал, рекомендуем посмотреть этот видеоурок:

Перевод статьи «Java For Loop».

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх