> For the complete documentation index, see [llms.txt](https://kaze.gitbook.io/qa-theory/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kaze.gitbook.io/qa-theory/osnovy-programmirovaniya-na-java/cikly.md).

# Циклы

1. **Цикл `for`**:
   * Цикл `for` предоставляет удобный способ выполнения операций определенное количество раз.
   * В скобках после ключевого слова `for` указывается инициализация, условие продолжения и выражение обновления.
   * Инициализация выполняется только один раз в начале цикла, условие проверяется перед каждой итерацией, а выражение обновления выполняется после каждой итерации.

```java
for (int i = 0; i < 5; i++) {
    System.out.println("Итерация номер " + i);
}
```

2. **Цикл `while`**:
   * Цикл `while` выполняет блок кода, пока условие истинно.
   * Условие проверяется перед каждой итерацией, и если оно становится ложным, выполнение цикла завершается.

```java
int i = 0;
while (i < 5) {
    System.out.println("Итерация номер " + i);
    i++;
}
```

3. **Цикл `do-while`**:
   * Цикл `do-while` похож на цикл `while`, но условие проверяется после каждой итерации.
   * Это означает, что блок кода будет выполнен хотя бы один раз, даже если условие изначально ложно.

```java
int i = 0;
do {
    System.out.println("Итерация номер " + i);
    i++;
} while (i < 5);
```

4. **Управление циклом**:
   * Ключевые слова `break` и `continue` используются для управления выполнением циклов.
   * `break` прерывает выполнение цикла и переходит к следующему оператору после цикла.
   * `continue` прерывает текущую итерацию цикла и переходит к следующей итерации.

```java
for (int i = 0; i < 10; i++) {
    if (i == 5) {
        continue; // Пропустить итерацию при i == 5
    }
    if (i == 8) {
        break; // Прервать выполнение цикла при i == 8
    }
    System.out.println("Итерация номер " + i);
}
```

В Java 5 и выше был введен синтаксический сахар для упрощения написания цикла `for` при работе с коллекциями или массивами. Этот синтаксис называется "расширенным циклом for" или "foreach".&#x20;

```java
for (тип переменной : коллекция) {
    // Тело цикла
}
```

Этот синтаксис позволяет итерироваться по элементам коллекции без явного использования счетчика или индекса. Внутри цикла каждая итерация представляет собой значение из коллекции, которое присваивается переменной. Вот пример использования расширенного цикла `for` для перебора элементов массива:

```java
int[] numbers = {1, 2, 3, 4, 5};
for (int number : numbers) {
    System.out.println(number);
}
```

Этот код выведет каждый элемент массива `numbers` на экран. Переменная `number` последовательно принимает значение каждого элемента массива в каждой итерации цикла.

То же самое можно сделать и с коллекциями, такими как `List`, `Set`, `Map` и другими.&#x20;

```java
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
for (String name : names) {
    System.out.println(name);
}
```

Этот код также выведет каждое имя из списка `names`. Каждая переменная `name` будет принимать значение каждого элемента списка в каждой итерации цикла.
