java初始化对象数组
我是Java新手,所以这可能是一个愚蠢的问题。假设我创建了一个名为SomeObject的类,其中包含一些参数的简单getter和setter。接下来,我想创建一个包含该对象3个实例的数组。谁能告诉我这两者的区别是什么
SomeObject[] objectArray = {new SomeObject(),new SomeObject(),new SomeObject()};
objectArray[0].setValue(10);
以及:
SomeObject[] objectArray = new SomeObject[3];
objectArray[0].setValue(10);
在第一种情况下,我完全可以得到对象[0]的值:
System.out.println(objectArray[0].getValue());
。。而后者在尝试设置值时会给出NullPointerException。是我遗漏了什么,还是我犯了另一种错误
# 1 楼答案
第一行代码创建三个
Object
来填充数组您的第二行代码创建了一个空数组,并且从不填充它,因此它仍然充满了
null
# 2 楼答案
如果您想使用第二种方法,可以尝试以下方法:
# 3 楼答案
创建对象数组时,实际上需要两个步骤
第一个方法同时执行这两个步骤,而第二个方法只执行第一步,因此对实际对象的引用是
null
这里
{...}
创建数组,内部new
创建对象这里
new
创建大小为3的数组。但是没有创建单个元素,例如object[0]
,因此引用是null
,这会导致异常# 4 楼答案
第二个版本
Object[] objects = new Object[3];
创建了一个大小为3的数组,但是对象不存在,它们是空的第一个
Object[] objects = {new Object(),new Object(),new Object()};
在创建数组的同时显式创建对象,以便您可以访问它们