1. Обзор
В этой статье мы рассмотрим основной аспект языка Java – выполнение оператора или группы операторов многократно с использованием цикла for .
2. Простой для цикла
A для цикл-это структура управления, которая позволяет нам повторять определенные операции путем увеличения и вычисления счетчика циклов.
Перед первой итерацией счетчик циклов инициализируется, затем выполняется оценка условия с последующим определением шага (обычно простым приращением).
Синтаксис цикла for таков:
for (initialization; Boolean-expression; step) statement;
Давайте рассмотрим это на простом примере:
for (int i = 0; i < 5; i++) { System.out.println("Simple for loop: i = " + i); }
Операторы initialization , Boolean-expression, и step , используемые в операторах for , являются необязательными. Вот пример цикла infinite for:
for ( ; ; ) { // Infinite for loop }
2.1. Маркировка для петель
Мы также можем иметь помеченные для циклов. Это полезно, если у нас есть вложенные циклы for, чтобы мы могли прервать /продолжить из определенного цикла for :
aa: for (int i = 1; i <= 3; i++) { if (i == 1) continue; bb: for (int j = 1; j <= 3; j++) { if (i == 2 && j == 2) { break aa; } System.out.println(i + " " + j); } }
3. Увеличенный для петли
Начиная с Java 5, у нас есть второй вид цикла for , называемый enhanced for , который облегчает итерацию по всем элементам массива или коллекции.
Синтаксис цикла enhanced for таков:
for(Type item : items) statement;
Поскольку этот цикл упрощен по сравнению со стандартным циклом for, нам нужно объявить только две вещи при инициализации цикла:
- Дескриптор элемента, который мы сейчас перебираем
- Исходный массив/коллекция, которую мы повторяем
Поэтому мы можем сказать, что: Для каждого элемента в items, назначьте элемент переменной item и запустите тело цикла .
Давайте рассмотрим простой пример:
int[] intArr = { 0,1,2,3,4 }; for (int num : intArr) { System.out.println("Enhanced for-each loop: i = " + num); }
Мы можем использовать его для итерации по различным структурам данных Java:
Задан объект List list – мы можем его итерировать:
for (String item : list) { System.out.println(item); }
Аналогично мы можем перебирать Set set :
for (String item : set) { System.out.println(item); }
И, учитывая Map map , мы также можем перебирать его:
for (Entryentry : map.entrySet()) { System.out.println( "Key: " + entry.getKey() + " - " + "Value: " + entry.getValue()); }
3.1. Повторяемость.инструкция foreach()
Начиная с Java 8, мы можем использовать циклы for-each несколько по-разному. Теперь у нас есть выделенный forEach() метод в интерфейсе Iterable , который принимает лямбда-выражение, представляющее действие, которое мы хотим выполнить .
Внутренне он просто делегирует задание стандартному циклу:
default void forEach(Consumer super T> action) { Objects.requireNonNull(action); for (T t : this) { action.accept(t); } }
Давайте посмотрим на пример:
Listnames = new ArrayList<>(); names.add("Larry"); names.add("Steve"); names.add("James"); names.add("Conan"); names.add("Ellen"); names.forEach(name -> System.out.println(name));
4. Заключение
В этом кратком руководстве мы изучили цикл Java for .
Как всегда, примеры можно найти на GitHub .