以下代码将 2d 布尔数组中大约一半的值分配给 true,另一半分配给 false:
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);
}
}
但是 2d 数组中的所有值都是错误的,我猜这意味着赋值只是没有发生,或者 b 是我要分配的布尔值的副本,而不是对它的引用。谁能解释发生了什么?