-1

我有二维数组

protected MyClass[][] myArray;

在构造函数中我有这个

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

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

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

谢谢

4

3 回答 3

1

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

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

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

(强调我的)

于 2013-04-07T14:17:56.930 回答
0

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

于 2013-04-07T14:18:25.267 回答
0

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

  • 数字基元 = 0
  • 布尔 = 假
  • 所有对象 = null
于 2013-04-07T14:19:16.623 回答