Java for(inti:x)做什么?
我是Java新手。我正在阅读某人对一个问题的解答,我遇到了这样一个问题:Java for(inti:x)做什么?,java,for-loop,Java,For Loop,我是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]++; int[]ps=newint[N
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]++;
int[]ps=newint[N];
对于(int i=0;i
最后两行是做什么的?这是一个for循环
for(int p:ps)
在ps
int数组中迭代int,这是一个for-each循环。它将p
设置为ps
的第一个元素,然后运行循环体。然后将p
设置为ps
的第二个元素,然后运行循环体。等等
它大约是以下的缩写:
for(int k = 0; k < ps.length; k++)
{
int p = ps[k];
counts[p]++;
}
for(int k=0;k
该行在数组的每个索引上迭代,并在p
varable中按顺序取出其值。您可以通过
for (int p : ps){ // if ps is {1,2,3}
System.out.print(p+" "); // it will print 1 2 3
counts[p]++;
}
对于每个循环(高级或增强的循环):
Java5中引入的for-each循环。主要用于导线测量
数组或集合元素。for each循环的优点是
它消除了出现bug的可能性,并使代码更加复杂
可读的
语法
for(data_type variable : array | collection){}
资料来源:
在您的例子中,此循环正在迭代数组
每个循环的等效代码
for (int i=0;i<ps.length;i++){
int p=ps[i];
counts[p]++;
}
用于(int i=0;它的变量p
在数组ps
范围内。你可以稍微玩玩一下,看看它是如何工作的,例如,在循环中打印p
的值。这对循环来说是增强的。p是一个局部变量p
不是数组ps
元素的索引。singhakash,我试图解释他对于每个循环,计数器是如何递增的,不进行逻辑解释,仍在编辑它!!