我只是試圖瞭解爲什麼這兩個循環不相同。爲每個循環遞增
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