我有二维数组
protected MyClass[][] myArray;
在构造函数中我有这个
this.myArray= new MyClass[20][20];
现在,没有初始化(又名 this.myArray[2][2] = new MyClass(par0, par1);)this.myArray[2][2] 的值为“null”。
这是有保证的吗?我在哪里可以阅读更多关于这个主题的信息?(也适用于 int 或 boolean 等原始类型)
谢谢
我有二维数组
protected MyClass[][] myArray;
在构造函数中我有这个
this.myArray= new MyClass[20][20];
现在,没有初始化(又名 this.myArray[2][2] = new MyClass(par0, par1);)this.myArray[2][2] 的值为“null”。
这是有保证的吗?我在哪里可以阅读更多关于这个主题的信息?(也适用于 int 或 boolean 等原始类型)
谢谢
是的,这是有保证的。数组值初始化为 null(对于对象)、0(对于数字基元)和 false(对于布尔基元),就像字段一样。
请参阅http://docs.oracle.com/javase/specs/jls/se7/html/jls-10.html#jls-10.6-100:
为该长度的新数组分配空间。如果没有足够的空间来分配数组,则数组初始值设定项的评估会通过抛出 OutOfMemoryError 突然完成。否则,将创建一个指定长度的一维数组,并将数组的每个组件初始化为其默认值(第 4.12.5 节)。
(强调我的)
是的。这种行为是有保证的。an 的默认值为Object
空。因此,数组的默认值Objects
也是 null,因此数组中的每个元素都需要实例化。请参阅数据类型中的默认值。
是的,这是有保证的。每种类型都有一个默认的初始化值: