2014-10-19 93 views
0

我只是试图了解为什么这两个循环不相同。为每个循环递增

int[] array = new int[10]; 
for (int j = 0; j < array.length; j++) { 
     array[j]++; 
    } 
for(int i: array){ 
     i++; 
} 

或换句话说,为什么第二个不会增加?

+2

添加语言标签。 – 2014-10-19 13:05:20

+0

您使用的是Java吗? – 2014-10-19 13:24:04

回答

0

在第二种情况下,您不分配值。价值就会迷失。第一种情况下的大括号负责分配。在第二个版本中,您只需取值并且不要分配它。但是在这种情况下它也会增加。

0

因为在数组[j]中您正在修改数组引用下的值。 int我没有引用数组中的值。 int是原始数据类型。只有int值被复制到你的局部变量i中。

0

array[j]++表示将存储在array[j]处的值增加1,因此第一个循环将数组中的所有值增加1。第二个循环是for-each循环,这相当于:

for(Iterator<Integer> iterator = iterator.iterator(); iterator.hasNext();) { 
    Integer i = iterator.next(); 
    i++; 
} 

正如你所看到的,我们永远不会改变由阵列的参考价值,只是局部变量被for-each循环引用。