在 Java 中创建对象数组

2022-08-31 05:58:35

我是Java的新手,当时在Java中创建一个对象数组。

例如,我有一个A类 -

A[] arr = new A[4];

但这只是创建指向 4 个对象的指针(引用),而不是 4 个对象。这是正确的吗?我看到当我尝试访问创建的对象中的函数/变量时,我得到一个空指针异常。为了能够操作/访问对象,我必须这样做:A

A[] arr = new A[4];
for (int i = 0; i < 4; i++) {
    arr[i] = new A();
}

这是正确的还是我做错了什么?如果这是正确的,它真的很奇怪。

编辑:我觉得这很奇怪,因为在C++你只是说新的,它创造了四个对象。A[4]


答案 1

这是正确的。

A[] a = new A[4];

...创建 4 个引用,类似于执行以下操作:A

A a1;
A a2;
A a3;
A a4;

现在,你不能不像这样分配:a1.someMethod()a1

a1 = new A();

同样,对于数组,您需要执行以下操作:

a[0] = new A();

...使用前。


答案 2

这是正确的。你也可以做:

A[] a = new A[] { new A("args"), new A("other args"), .. };

此语法还可用于在任意位置创建和初始化数组,例如在方法参数中:

someMethod( new A[] { new A("args"), new A("other args"), . . } )