Начиная с Java 1.5 цикл for-each или улучшенный цикл for — это краткий способ итерации по элементам массива и коллекции. Проще говоря, цикл for-each — это короткая форма цикла for без использования переменной-счетчика индекса.
Отсутствие переменной счетчика делает код более читаемым и менее подверженным ошибкам. Это устраняет возможность известного исключения ArrayIndexOutOfBoundsException, которое часто встречается в традиционном цикле for.
1. Синтаксис
Цикл for-each не использует индексную переменную. Он использует переменную базового типа Collection или массива, который мы будем перебирать, за которым следует двоеточие и, наконец, сам массив/коллекция.

В следующем коде массив содержит элементы типа T. Элемент — это переменная типа T, и в каждой итерации элемент ссылается на текущий элемент в массиве.
for(T item : array) {...}
Для примитивных типов, типов-оболочек и всех других типов классов используется один и тот же синтаксис.
2. Итерация по массиву
Следующая программа Java перебирает и выводит все элементы массива целочисленного типа numArray.
int[] numArray = {10, 20, 30, 40};for(int item : numArray) {System.out.println(item);}
Программа перебирает массив за четыре итерации.
- В первой итерации значение элемента равно 10.
- Во второй итерации значение элемента равно 20.
- В третьей итерации значение элемента равно 30.
- В четвертой и последней итерации значение элемента равно 40.
Вывод программы:
10203040
2. Итерация по списку
Логика итерации остается прежней и для типов коллекций. Нам нужно только передать переменную коллекции вместо массива.
List<String> list = List.of("A", "B", "C");for(String item : list) {System.out.println(item);}
Вывод программы:
ABC
4. Использование метода forEach()
Начиная с Java 8, метод forEach() — это еще один способ перебрать все элементы массива коллекции, очень похожий на цикл for-each. Метод forEach() принимает действие Consumer, которое он применяет к каждому элементу коллекции или массива.
Например, мы можем переписать предыдущий пример итерации списка следующим образом. System.out::println — это ссылка на метод и имеет тип действия Consumer. Вывод программы тот же.
List<String> list = List.of("A", "B", "C");list.forEach(System.out::println);
Напишите мне свои вопросы, связанные с операторами управления потоком цикла for-each в Java.