下面的代碼中的bool爲真,另一半的二維數組分配大約一半的值設置爲false:的foreach二維數組賦值
boolean[][] btab = new boolean[10][10];
for (int row = 0; row < btab.length; row++) {
for (int col = 0; col < btab[row].length; col++) {
btab[row][col] = (Math.random() < 0.5);
}
}
我使用foreach循環會做同樣的事情,想到了下面的代碼...
boolean[][] btab = new boolean[10][10];
for (boolean[] row : btab) {
for (boolean b : row) {
b = (Math.random() < 0.5);
}
}
但二維數組中所有的值都是假的,我猜意味着,無論是分配正義是不會發生或b是布爾值的副本,我想分配給,而不是對它的引用。任何人都可以解釋發生了什麼?
感謝您的快速回復。作爲參考,Java規範的相關位是[here](http://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.14.2)。 – njm 2012-08-05 00:00:26