布尔数组问题

时间:2011-12-12 17:06:12

标签: java boolean

代码正确打印出“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]);
}

6 个答案:

答案 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