Java: Массивы
2026-02-26 18:35 Diff

for относится к низкоуровневым циклам. Он требует задания счетчика, правил его изменения и условия остановки. Было бы значительно удобнее обходить элементы коллекции напрямую, без счетчика. Многие языки программирования решают это введением специального вида цикла. В Java тоже есть такой: for-each.

С for этот пример выглядит так:

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

Этот цикл отлично подходит для задач агрегации:

С помощью for-each можно обходить строку посимвольно. В этом поможет метод toCharArray():

Применимость

В большинстве задач, использующих цикл, предпочтительнее for-each . Иногда его бывает недостаточно, и требуется ручное управление обходом. В таких случаях можно возвращаться к использованию for. Например, когда нужно идти не по каждому элементу массива, а через один:

Иногда нужно обходить массив в обратном порядке. for-each здесь бессилен и снова нужен for:

Другие задачи вообще с массивами напрямую не связаны. К последним относятся ситуации, когда нужно перебирать числа в определенном диапазоне. В этом случае нет массива, по которому можно было бы пройтись с помощью for-each.

Ну и наконец, встречаются задачи, в которых нужно во время обхода менять исходный массив: