for(int i : x) 做什么?对于每个循环(高级或增强的 For 循环):

2022-09-03 15:05:06

我是Java的新手。我正在阅读某人对一个问题的解决方案,我遇到了这个问题:

        int[] ps = new int[N];
        for (int i = 0; i < N; i++)
            ps[i] = input.nextInt();

        int[] counts = new int[1005];
        for (int p : ps)
            counts[p]++;

最后两行有什么作用?


答案 1

这是一个针对每个循环。它设置为 的第一个元素,然后运行循环体。然后它设置为 的第二个元素,然后运行循环体。等等。ppspps

它大约是以下各项的缩写:

for(int k = 0; k < ps.length; k++)
{
    int p = ps[k];
    counts[p]++;
}

答案 2

对于每个循环(高级或增强的 For 循环):

Java5 中引入的 for-each 循环。它主要用于遍历数组或集合元素。for-each 循环的优点是它消除了 bug 的可能性,并使代码更具可读性。

语法

for(data_type variable : array | collection){}  

源代码 :每个循环的 Java

在你的例子中,这个循环正在迭代Array

不带 For 每个循环的等效代码

for (int i=0;i<ps.length;i++){
int p=ps[i];
counts[p]++;
}