下面的代码中的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