English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В этом руководстве мы будем изучать с помощью примеров другую форму цикла for в Java, известную как улучшенный цикл for или цикл for-each.
В Java, при обработке массивов и коллекций, мы можем использовать улучшенный цикл for. Его также называют циклом for-each. Это потому, что цикл перебирает каждый элемент массива или коллекции.
Прежде чем понять цикл for-each, убедитесь, что вы понимаете:
Почему при обработке массивов предпочтительнее использовать цикл for-each, а не цикл for, посмотрим на следующий пример.
В этом примере показано, как использовать стандартный цикл for для遍жения элементов массива.
class ForLoop { public static void main(String[] args) { char[] vowels = {'a', 'e', 'i', 'o', 'u'}; for (int i = 0; i < vowels.length; ++i) { System.out.println(vowels[i]); } } }
вывод:
a e i o u
Теперь мы выполним ту же задачу с помощью цикла for-each.
class AssignmentOperator { public static void main(String[] args) { char[] vowels = {'a', 'e', 'i', 'o', 'u'}; // foreach цикл for (char item: vowels) { System.out.println(item); } } }
вывод:
a e i o u
Здесь мы можем видеть, что вывод двух программ одинаковый.
Когда мы внимательно анализируем эти два программы, мы можем заметить, что цикл for-each легче пишется и делает наш код более читаемым. Вот почему он называется улучшенным циклом for.
Таким образом, рекомендуется использовать улучшенный цикл for как можно чаще.
Давайте сначала рассмотрим синтаксис цикла for-each:
for(data_type item : collections) { ... }
Здесь,
collection - набор или массив, который нужно пройтись.
item - отдельный элемент в наборе.
Для каждого итерации выполняется цикл for-each, именно так работает цикл for-each в Java.
итерация - перебирается каждый элемент в заданном наборе или массиве (collections)
хранится - каждый элемент в переменной (item)
иПовторяетсяОсновное тело цикла.
Давайте разберем это на конкретном примере.
Ниже приведена программа, которая вычисляет сумму всех элементов целочисленного массива.
class EnhancedForLoop { public static void main(String[] args) { int[] numbers = {3, 4, 5, -5, 0, 12}; int sum = 0; for (int number: numbers) { sum += number; } System.out.println("Sum = " + sum); } }
вывод:
Sum = 19
В上面的 программе, выполнение foreach-цикла таково:
итерация | значение |
---|---|
1 | when number = 3, sum = 0 + 3 = 3 |
2 | when number = 4, sum = 3 + 4 = 7 |
3 | when number = 5, sum = 7 + 5 = 12 |
4 | when number = -5, sum = 12 + (-5) = 7 |
5 | when number = 0, sum = 7 + 0 = 7 |
6 | when number = 12, sum = 7 + 12 = 19 |
Вы можете видеть foreach-цикл в каждом итерации
пройти через каждый элемент массива numbers
сохранить его в переменной number
и выполнить的主体, и добавить number в переменную sum, в конце концов, получить общее количество (sum)