Obj
在他的构造函数中有类System.out.println("Hello world!") ;
我创建了一个此类使用的数组 -并且没有打印任何内容,这意味着 - 没有调用Obj[] objArray = new Obj[10] ;
任何实例。Obj
有没有办法创建这样的数组,但是除了在 for 循环中创建它们之外,还有实例?
好吧,既然你想知道除了使用 for 循环之外的方法,你可以这样做: -
Obj[] objArray = {new Obj(), new Obj(), new Obj()};
这里发生的是,您正在使用数组元素直接初始化您的数组引用。现在,实际数组对象的类型是从 LHS 上的数组引用类型推断出来的。
因此,通过该声明,创建了一个大小为 3 的数组(在上述情况下),数组中的每个索引都使用给定顺序instance
的类初始化。Obj
我建议的更好方法是使用ArrayList
,在这种情况下,您必须在没有 for 循环的情况下double-braces initialization
初始化。List
再加上一个额外的优势,您可以随时向其中添加新元素。因为它dynamically increasing
排列。
List<Object> list = new ArrayList<Object>() {
{
add(new Obj());
add(new Obj());
add(new Obj());
}
}; // Note the semi-colon here.
list.add(new Obj()); // Add another element here.
到目前为止的答案很好而且很有帮助。我在这里只是为了提醒你
Obj[] objArray = new Obj[10];
Arrays.fill(objArray, new Obj());
但是,这只会为数组的所有元素分配一个引用(对新的 Obj())。
当你这样做时,Obj[] objArray = new Obj[10] ;
你只创建一个引用数组来指向实际的“Obj”对象。
但是在您的情况下,从未创建过实际的 Obj 对象。
for (int i = 0; i < objArray.length; i++) {
objArray[i] = new Obj();
}
执行上述操作将打印所需的内容。
最后做所有的System.out.println(Arrays.deepToString(objArray))
打印toString()
Obj
Obj[] objArray = new Obj[10] ;
只需创建一个能够容纳 10 个 Objs 的数组。要将 Objs 放入数组中,您需要使用 Rohit 的方法或编写一个简单的for
循环来一次初始化一个数组条目:
for (int i = 0; i < 10; i++) {
objArray[i] = new Obj();
}
或者,没有 for 循环:
int i = 0;
while (i < 10) {
objArray[i] = new Obj();
i++;
}