在Java中,我嘗試使用迭代器更改int(原始類型)數組的值。但是,正如您在下面看到的那樣,迭代器在進行打印時可以正常工作,但不能更改int []的值。雖然一個簡單的使用索引的for循環可以完成這項工作,但我想知道為什么使用迭代器的for循環不用于更改值,但可以用于打印。謝謝public class playGround { public static void main(String[] args) { int[] array = new int[5]; System.out.println("using iterable: ---"); for (int num : array) { System.out.print(" " + num); num = 2; System.out.println(" " + num); } System.out.println(" after: ---"); for (int num : array) { System.out.print(" " + num); } System.out.println(); System.out.println("using index: ---"); for (int i = 0; i < array.length ; i++) { array[i] = i; } for (int num : array) { System.out.print(" " + num); } } }輸出:using iterable: --- 0 2 0 2 0 2 0 2 0 2 after: --- 0 0 0 0 0using index: --- 0 1 2 3 4Process finished with exit code 0
3 回答

FFIVE
TA貢獻1797條經驗 獲得超6個贊
您應該檢查一下:每個循環的java如何工作。但是,如果您想對該主題進行深入的說明,則應該查看Oracle Javadoc參考。
無論如何,您都將在名為num的新變量中創建值的副本。因此,對變量的任何修改都不會應用于數組中的值。

溫溫醬
TA貢獻1752條經驗 獲得超4個贊
在修改forEach循環中的元素時,實際上是在修改迭代器在中分配的值int num
,而不是原始數組的值。您得到的是文字,而不是指向數組中包含的對象的指針。

慕標5832272
TA貢獻1966條經驗 獲得超4個贊
int num
是局部變量。為其分配值2僅在一次for
迭代的范圍內對其進行更改。
更改原始數組的值的正確方法是像在堆中那樣訪問堆中的值array[i] = i
。
添加回答
舉報
0/150
提交
取消