2014-10-19 94 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循環引用。