代码正确打印出“x [2] [2]为假”,我的问题是理解为什么会发生这种情况。 (这是正确的,我只需要有人向我说“计算机说话”这个逻辑 - 我将在4个小时内完成我的决赛并且再也不会打扰任何人:))
非常感谢你的帮助!
public static void main(String[] args) {
boolean[][] x = new boolean[3][];
x[0] = new boolean[1];x[1] = new boolean[2];
x[2] = new boolean[3];
System.out.println("x[2][2] is " + x[2][2]);
}
答案 0 :(得分:3)
创建数组时,每个条目都会获得一个默认值。对于boolean
,默认值为false
。 (对于数字基元,默认值为零。对于引用类型,默认值为null
。)
因此,当您创建顶级数组boolean[][] x = new boolean[3][];
时,x
是一个3元素的布尔数组数组,每个元素都设置为默认值null
。 (单个基本类型数组是引用类型。)然后,程序使用新的布尔基元数组初始化x
的每个元素,每个布尔基元都填充false
个元素。请注意,阵列具有不同的长度;这不是Java中的问题。实际上,x[2][2]
确实存在(与x[1][2]
不同),因此对println
的调用成功。
答案 1 :(得分:2)
创建new boolean[n]
时,所有布尔值默认为false
(这也是boolean
的默认值)
答案 2 :(得分:1)
当你声明一个布尔数组时,它会自动默认为它的所有值为'false'。
答案 3 :(得分:0)
数组元素初始化为默认值,如果是布尔基元,则为false
。因此new boolean[3]
将导致{false, false, false}
;
答案 4 :(得分:0)
这是因为所有基元类型的变量都有默认值。您不能在没有初始化的情况下使用常规变量,但在创建数组时,每个元素都会自动初始化。 int,long,short to 0,float和double to 0.0,boolean to false。
您不初始化二维数组的元素。所以它的所有元素默认都是假的。
答案 5 :(得分:0)
无论您分配多少和多少,Java中boolean
的默认值为false
。