正在初始化 Java 中的对象数组

Initializing array of objects in Java

我需要帮助来理解如何在 Java 中初始化 class 的对象。

我的代码是这样的:

...
Test t[] = null;
...
for (i=0;i<20;i++)
   t[i] = new Test(10,20);
...

当我在 Eclipse 中编写上面的代码时,它给我一个错误提示 "Null Pointer Access: The variable data can only be null at this location".

我尝试了所有纠正错误的方法,但没有成功。

您需要为数组本身分配 space,然后 初始化它们的元素。

Test[] t = new Test[20];
for (i = 0; i < 20; i++) {
    t[i] = new Test(10, 20);
}

如果数组的长度是可变的,您可以像传递任何其他变量一样传递值。

int arraySize = 35;
Test[] t = new Test[arraySize];
for (i = 0; i < arraySize; i++) {
    t[i] = new Test(10, 20);
}

数组大小在初始化后是固定的,但您始终可以使用 arr.length 属性.

获取数组的长度

尝试

Test[] t = new Test[20];

当您将 t 设置为 null 时,它会尝试访问不存在的数组。

在java中,数据类型可以是原始类型或引用类型。引用类型是 Class 或接口类型或数组类型。 当你想要创建一个对象数组时,首先你需要声明并实例化数组对象本身,然后实例化class需要的对象并赋值给数组对象。

 ArrayDataType[] ArrayName=new ArrayDataType[Dimensions];
    for(int i=0;i<Dimensions;i++){
    Arrayname[i]=new ObjectDataType();  
    \ where the ObjectDatatype can be either ArrayDataType or SubType
    }

需要像下面那样初始化你的数组测试[]然后使用它

Test[] t = new Test[20];

您需要通过指定数组大小来初始化数组。

Test[] t = new Test[20];

如果不想限制数组大小。您可以考虑使用 ArrayList,随着元素添加到 ArrayList,其容量会自动增长。

List<Test> testList = new ArrayList<Test>();

在 Java 中,对象数组 不可变 并且必须进行初始化。

没什么事可做。

您可以在分配期间提供元素:

Test t[] = { new Test(10, 20), new Test(30, 40) };

如果你不知道这些值,你可以给数组分配适当的分配:

Test t[] = new Test[4];

在您的情况下,您仍然需要初始化数组。

一般来说,声明时不需要这样做,除非变量是final。

Test t[];            // declaration

t[] = new Test[20];  // assignment

for ( i=0 ; i<20 ; i++ ) {

    t[i] = new Test(10,20);

}

Java 还有一组 class 可以处理列表、数组、键值集和链表。

如果需要使用可变数组,请使用ArrayList对象。

这样可以避免初始化。

这是一个简短的例子:

ArrayList<Test> t = new ArrayList<Test>();

for( i=0 ; i<20 ; i++ ) {

    t.add(new Test(10,20));

}

与不可变对象数组相比,可变列表的开销很大,但是 Java 编码人员使用 System.arraycopy() 函数真正调整了 ArrayList class。

因此您不会看到太多性能下降。

简而言之,仅当您完全无法知道所需的分配时才使用可变 ArrayList space。