我只是试图了解为什么这两个循环不相同。为每个循环递增
int[] array = new int[10];
for (int j = 0; j < array.length; j++) {
array[j]++;
}
for(int i: array){
i++;
}
或换句话说,为什么第二个不会增加?
我只是试图了解为什么这两个循环不相同。为每个循环递增
int[] array = new int[10];
for (int j = 0; j < array.length; j++) {
array[j]++;
}
for(int i: array){
i++;
}
或换句话说,为什么第二个不会增加?
在第二种情况下,您不分配值。价值就会迷失。第一种情况下的大括号负责分配。在第二个版本中,您只需取值并且不要分配它。但是在这种情况下它也会增加。
因为在数组[j]中您正在修改数组引用下的值。 int我没有引用数组中的值。 int是原始数据类型。只有int值被复制到你的局部变量i中。
array[j]++
表示将存储在array[j]
处的值增加1,因此第一个循环将数组中的所有值增加1。第二个循环是for-each循环,这相当于:
for(Iterator<Integer> iterator = iterator.iterator(); iterator.hasNext();) {
Integer i = iterator.next();
i++;
}
正如你所看到的,我们永远不会改变由阵列的参考价值,只是局部变量被for-each循环引用。
添加语言标签。 – 2014-10-19 13:05:20
您使用的是Java吗? – 2014-10-19 13:24:04