Java:对象数组,两种不同的初始化方式

Java: array of objects, two different approaches of initialization

我目前正在尝试初始化一个对象数组,遇到了以下两种填充对象数组的方法:

方法一

Cat[] catArray = new Cat[num]
 
for (int i = 0; i < num; i++) {
    Cat someCat = new Cat();
    catArray[i] = someCat;
}

方法二

Cat[] catArray = new Cat[num]
 
for (int i = 0; i < num; i++) {
    catArray[i] = new Cat();
}

以上两种初始化和填充对象数组的方式在内存使用方面有什么明显的区别and/or性能?

Java中的对象总是在堆中分配,而它们的地址在堆栈中。

因此,使用方法 1 或方法 2 并没有真正的区别:在方法 1 中,您只是将地址复制了 num 倍。这应该不会给您带来任何性能问题。

编译器甚至可能会优化您的代码,运行方法 1 和方法 2 等效。

从编程的角度来看,方法 1 没有实际意义:someCat 从未使用过,并且在 for 循环后不可访问。在 for 循环中,您只需使用 catArray[i].

即可访问新的 Cat