【问题标题】:Declaration of array of objects - null value [duplicate]对象数组的声明-空值[重复]
【发布时间】:2013-04-07 14:15:46
【问题描述】:

我有一个二维数组

protected MyClass[][] myArray;

在构造函数中我有这个

this.myArray= new MyClass[20][20];

现在,没有初始化(又名 this.myArray[2][2] = new MyClass(par0, par1);) this.myArray[2][2] 的值为“null”。

这是有保证的吗?我在哪里可以阅读更多关于这个主题的信息? (也适用于 int 或 boolean 等原始类型)

谢谢

【问题讨论】:

    标签: java declaration


    【解决方案1】:

    是的,这是有保证的。数组值初始化为 null(对于对象)、0(对于数字基元)和 false(对于布尔基元),就像字段一样。

    http://docs.oracle.com/javase/specs/jls/se7/html/jls-10.html#jls-10.6-100:

    为该长度的新数组分配空间。如果没有足够的空间来分配数组,则数组初始值设定项的评估会通过抛出 OutOfMemoryError 突然完成。否则,将创建一个具有指定长度的一维数组,并且将数组的每个组件初始化为其默认值(第 4.12.5 节)

    (强调我的)

    【讨论】:

    • 谢谢,我在 oracle.com 上找不到这个。
    【解决方案2】:

    是的,这是有保证的。每种类型都有一个默认的初始化值:

    • 数字基元 = 0
    • 布尔 = 假
    • 所有对象 = null

    【讨论】:

      【解决方案3】:

      是的。这种行为是有保证的。 Object 的默认值为 null。因此,Objects 数组的默认值也是 null,因此需要实例化数组中的每个元素。请参阅Data Types 中的默认值

      【讨论】:

        猜你喜欢
        • 2023-04-06
        • 1970-01-01
        • 2013-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多