2016-04-01 90 views
2

在for each循環中,輸出爲6.但是,我認爲輸出爲0,因爲至少對於一維數組,每個循環只遍歷數組。如果「f」只是循環中的局部變量,「g」如何編輯?For Each Loop Editing Original 2D Array

int[][] g = new int[7][7]; 

for(int[] f : g) { 
    for(int h = 0; h < f.length; h++) 
     f[h] = 6; 
} 

System.out.println(g[4][6]); 
+0

'int []'是一個引用類型,所以你的'int [] []'具有引用類型的元素。因此您可以修改該值。 –

回答

2

儘管Java是pass-by-value,如果傳遞的價值觀是可變數據類型的引用,可以將它們突變。

如您所知,f是您在增強for循環中迭代的值,但它表示包含在您的二維數組g內的每個元素。

在這種情況下,您的int[]是可變的。您正在主動將您的二維數組中的值完全編輯爲另一個值。