# Java `for-each`循环（增强循环）

> 原文： [https://www.programiz.com/java-programming/enhanced-for-loop](https://www.programiz.com/java-programming/enhanced-for-loop)

#### 在本教程中，我们将借助示例学习 Java 中另一种形式的`for`循环，称为增强的`for`循环或每个循环。

在 Java 中，在处理数组和集合时，我们可以使用增强形式的`for`循环。 也称为`for-each`循环。 这是因为循环会遍历数组或集合的每个元素。

在了解`for-each`循环之前，请确保您了解：

*   [Java `for`循环](/java-programming/for-loop "Java for Loop")
*   [Java 数组](/java-programming/arrays "Java Arrays")
*   [Java 集合](/java-programming/collections "Java Collections")

* * *

## `for`循环和`for-each`循环之间的区别

要知道在处理数组时为什么`for-each`循环比`for`循环更受青睐，我们来看下面的示例。

这里的示例显示了如何使用标准`for`循环遍历数组的元素。

```java
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]);
        }
    }
}
```

**输出**：

```java
a
e
i
o
u
```

现在，我们将使用`for-each`循环执行相同的任务。

```java
class AssignmentOperator {
   public static void main(String[] args) {

      char[] vowels = {'a', 'e', 'i', 'o', 'u'};
      // foreach loop
      for (char item: vowels) {
         System.out.println(item);
      }
   }
}
```

**输出**：

```java
a
e
i
o
u
```

在这里，我们可以看到两个程序的输出是相同的。

当我们仔细分析这两个程序时，我们可以注意到`for-each`循环更易于编写，并使我们的代码更具可读性。 这就是它被称为增强`for`循环的原因。

因此，建议尽可能在标准`for`循环上使用增强的`for`循环。

* * *

## Java `for-each`循环

我们首先来看一下每个循环的语法：

```java
for(data_type item : collections) {
    ...
}
```

这里，

*   `collections` - 您必须循环通过的集合或数组。
*   `item` - 集合中的单个项目。

* * *

## `for-each`循环如何工作？

这是`for-each`循环在 Java 中的工作方式。 对于每个迭代，`for-each`循环

*   **迭代**遍历给定集合或数组（`set`）中的每个项目，
*   **将**每一项存储在一个变量中（`item`）
*   **执行循环的主体。**

让我们通过一个例子来阐明它。

## 示例：`for-each`循环

下面的程序计算整数数组的所有元素的总和。

```java
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);
    }
}
```

**输出**：

```java
Sum = 19
```

在以上程序中，`for-each`循环的执行如下：

| 迭代 | 值 |
| --- | --- |
| 1 | `number = 3`且`sum = 0 + 3 = 3` |
| 2 | `number = 4`且`sum = 3 + 4 = 7` |
| 3 | `number = 5`且`sum = 7 + 5 = 12` |
| 4 | `number = -5`且`sum = 12 + (-5) = 7` |
| 5 | `number = 0`且`sum = 7 + 0 = 7` |
| 6 | `number = 12`且`sum = 7 + 12 = 19` |

您可以在每次迭代中看到`for-each`循环

*   遍历`number`数组中的每个元素
*   将其存储在`number`变量中
*   并执行主体，即将`number`加到`sum`