【问题标题】:for each loop incremementforeach 循环增量
【发布时间】:2014-12-14 13:25:54
【问题描述】:
我只是试图理解为什么这两个循环不一样。
int[] array = new int[10];
for (int j = 0; j < array.length; j++) {
array[j]++;
}
for(int i: array){
i++;
}
或者换句话说,为什么秒不增加?
【问题讨论】:
标签:
java
for-loop
foreach
post-increment
【解决方案1】:
array[j]++ 表示将存储在array[j] 的值加一,因此第一个循环将数组中的所有值加一。第二个循环是for-each循环,相当于:
for(Iterator<Integer> iterator = iterator.iterator(); iterator.hasNext(); ) {
Integer i = iterator.next();
i++;
}
如您所见,我们永远不会更改数组引用的值,只会更改 for-each 循环引用的局部变量。
【解决方案2】:
因为在数组 [j] 中,您正在修改数组引用下数组中的值。 int i 不引用数组中的值。 int 是原始数据类型。它只是复制到本地变量 i 的 int 值。
【解决方案3】:
在第二种情况下,您不分配值。只是失去了价值。第一种情况下的大括号负责分配。在第二个版本中,您只需获取值而不分配它。但是在这种情况下它也会增加。