首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >初始化对象数组

初始化对象数组
EN

Stack Overflow用户
提问于 2013-08-09 15:57:37
回答 4查看 89关注 0票数 0

我对Java并不熟悉,所以这可能是个愚蠢的问题。假设我创建了一个名为SomeObject的类,其中包含一些参数的简单getter和setter。接下来,我想创建一个由该对象的3个实例组成的数组。有谁能告诉我:

代码语言:javascript
复制
SomeObject[] objectArray = {new SomeObject(),new SomeObject(),new SomeObject()};
objectArray[0].setValue(10);

以及:

代码语言:javascript
复制
SomeObject[] objectArray = new SomeObject[3];
objectArray[0].setValue(10);

在第一种情况下,我完全可以得到对象的值。

代码语言:javascript
复制
System.out.println(objectArray[0].getValue());

..while,后者在尝试设置值时给出一个NullPointerException。我是错过了什么,还是我犯了另一种错误?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-08-09 15:59:49

当您创建一个对象数组时,实际上需要两个步骤

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

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

代码语言:javascript
复制
Object[] objects = {new Object(),new Object(),new Object()};

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

代码语言:javascript
复制
Object[] objects = new Object[3];

在这里,new创建了大小为3的数组,但是没有创建单个元素,比如object[0],因此引用是null,这将导致异常。

票数 6
EN

Stack Overflow用户

发布于 2013-08-09 15:59:50

第一行代码创建三个Object来填充数组。

您的第二行代码创建了一个空数组,并且从不填充它,所以它仍然充满了null

票数 2
EN

Stack Overflow用户

发布于 2013-08-09 15:59:50

第二个版本,Object[] objects = new Object[3];,创建一个大小为3的数组,但是对象不存在,它们是空的。

首先,Object[] objects = {new Object(),new Object(),new Object()};在创建数组的同时显式地创建对象,因此您可以访问它们。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18150900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档