📜  Java中的for-each循环

📅  最后修改于: 2020-02-12 15:09:39             🧑  作者: Mango

For-each是Java5中引入的另一种数组遍历技术,例如for循环,while循环,do-while循环。

  • 类似于常规for循环的关键字开头。
  • 无需声明和初始化循环计数器变量,而是声明一个与数组的基本类型相同类型的变量,然后是冒号,然后是数组名。
  • 在循环主体中,可以使用创建的循环变量,而不是使用索引数组元素。
  • 它通常用于遍历数组或Collections类(例如ArrayList)

语法:

for (type var : array)
{
    statements using var;
}

等效于:

for (int i=0; i

例子:

// Java程序展示for-each循环
class For_Each
{
    public static void main(String[] arg)
    {
        {
            int[] marks = { 125, 132, 95, 116, 110 };
            int highest_marks = maximum(marks);
            System.out.println("最高分数是 " + highest_marks);
        }
    }
    public static int maximum(int[] numbers)
    {
        int maxSoFar = numbers[0];
        // for-each 循环
        for (int num : numbers)
        {
            if (num > maxSoFar)
            {
                maxSoFar = num;
            }
        }
    return maxSoFar;
    }
}

输出:

最高分是 132

每个循环的局限性

  1. 当您要修改数组时, for-each循环不合适
    for (int num : marks)
    {
        // 只修改num, 不修改array元素
        num = num*2;
    }
  2. 每个for循环都不跟踪index。因此我们无法使用for-each循环获取数组索引:
    for (int num : numbers)
    {
        if (num == target)
        {
            return ???;   // 不知道num的index
        }
    }
  3. for-each 仅一步一步地遍历数组
    // 不能被转换成for-each循环
    for (int i=numbers.length-1; i>0; i--)
    {
          System.out.println(numbers[i]);
    }
  4. for-each无法处理两个决策声明
    // 不能被转换成for-each循环
    for (int i=0; i