我需要帮助来理解如何在 Java 中初始化一个类的对象。
我的代码是这样的:
...
Test t[] = null;
...
for (i=0;i<20;i++)
t[i] = new Test(10,20);
...
当我在 Eclipse 中编写上面的代码时,它给了我一个错误,说“空指针访问:变量数据只能在这个位置为空”。
我尝试了所有纠正错误的方法,但没有运气。
我需要帮助来理解如何在 Java 中初始化一个类的对象。
我的代码是这样的:
...
Test t[] = null;
...
for (i=0;i<20;i++)
t[i] = new Test(10,20);
...
当我在 Eclipse 中编写上面的代码时,它给了我一个错误,说“空指针访问:变量数据只能在这个位置为空”。
我尝试了所有纠正错误的方法,但没有运气。
您需要为数组本身分配空间,然后初始化它们的元素。
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];
如果您不想限制数组大小。您可以考虑使用ArrayList,当元素添加到 ArrayList 时,其容量会自动增长。
List<Test> testList = new ArrayList<Test>();
在 Java 中,对象数组是不可变的,必须进行初始化。
要做的事情很少。
您可以在分配期间提供元素:
Test t[] = { new Test(10, 20), new Test(30, 40) };
如果您不知道这些值,则可以为数组分配正确的分配:
Test t[] = new Test[4];
在您的情况下,您仍然需要初始化数组。
一般来说,声明时不需要这样做,除非变量是最终的。
Test t[]; // declaration
t[] = new Test[20]; // assignment
for ( i=0 ; i<20 ; i++ ) {
t[i] = new Test(10,20);
}
Java 也有一组使用列表、数组、键值集和链表的类。
如果需要使用可变数组,请使用ArrayList
对象。
这将允许您避免初始化。
这是一个简短的例子:
ArrayList<Test> t = new ArrayList<Test>();
for( i=0 ; i<20 ; i++ ) {
t.add(new Test(10,20));
}
与不可变对象数组相比,可变列表代价高昂,但 Java 编码人员确实使用该函数调整了ArrayList
该类。System.arraycopy()
所以你不会看到性能下降太多。
简而言之,仅当您完全无法知道所需的分配空间时才使用可变的 ArrayList。
需要像下面一样初始化你的数组 test[]然后使用它
Test[] t = new Test[20];
尝试
Test[] t = new Test[20];
当您将 t 设置为 null 时,它会尝试访问不存在的数组。
在 java 中,数据类型可以是原始的或引用的。引用类型是类或接口类型或数组类型。当您要创建对象数组时,首先需要声明并实例化数组对象本身,然后实例化该类所需的对象并将它们分配给数组对象。
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
}