关于java:(int i:x)有什么用?

What does for(int i : x) do?

本问题已经有最佳答案,请猛点这里访问。

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

1
2
3
4
5
6
7
        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]++;

最后两行做了什么?


这是for-each循环。 它将p设置为ps的第一个元素,然后运行循环体。 然后将p设置为ps的第二个元素,然后运行循环体。 等等。

这大约是:

1
2
3
4
5
for(int k = 0; k < ps.length; k++)
{
    int p = ps[k];
    counts[p]++;
}

For-each循环(Advanced或Enhanced For循环):

The for-each loop introduced in Java5. It is mainly used to traverse
array or collection elements. The advantage of for-each loop is that
it eliminates the possibility of bugs and makes the code more
readable.

句法

1
for(data_type variable : array | collection){}

来源:每个循环的Java

在你的情况下,这个循环迭代Array

不用于每个循环的等效代码

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


该行迭代遍历数组的每个索引,并在p varable中的序列中取出其值。您可以通过

1
2
3
4
for (int p : ps){            // if ps is {1,2,3}
   System.out.print(p+"");  // it will print 1 2 3
   counts[p]++;
}

这是一个for循环。 for (int p : ps)遍历ps int数组中的int