初始化对象数组

0 java arrays initialization nullpointerexception

我是Java的新手,所以这可能是一个愚蠢的问题.假设我创建了一个名为SomeObject的类,其中包含一些参数的简单getter和setter.接下来,我想创建一个包含该对象的3个实例的数组.谁能告诉我有什么区别:

SomeObject[] objectArray = {new SomeObject(),new SomeObject(),new SomeObject()};
objectArray[0].setValue(10);
Run Code Online (Sandbox Code Playgroud)

和:

SomeObject[] objectArray = new SomeObject[3];
objectArray[0].setValue(10);
Run Code Online (Sandbox Code Playgroud)

在第一种情况下,我可以很好地获得对象[0]的值:

System.out.println(objectArray[0].getValue());
Run Code Online (Sandbox Code Playgroud)

..而后者在尝试设置值时给出NullPointerException.我错过了一些东西,还是我犯了一些不同的错误?

Kar*_*k T 6

创建对象数组时,实际上需要2个步骤

  1. 创建数组
  2. 创建对象

第一种方法同时执行两种方法,而第二种方法只执行第一种方法,因此对实际对象的引用是null.

Object[] objects = {new Object(),new Object(),new Object()};
Run Code Online (Sandbox Code Playgroud)

这里{...}创建数组,内部new创建对象.

Object[] objects = new Object[3];
Run Code Online (Sandbox Code Playgroud)

这里new创建了大小为3的数组.但是单个元素,例如object[0]未创建,因此引用是null,这会导致异常.