Java:对象数组,两种不同的初始化方法
我目前正在尝试初始化对象数组,并遇到了以下两种填充对象数组的方法: 方法1Java:对象数组,两种不同的初始化方法,java,arrays,object,initialization,Java,Arrays,Object,Initialization,我目前正在尝试初始化对象数组,并遇到了以下两种填充对象数组的方法: 方法1 Cat[] catArray = new Cat[num] for (int i = 0; i < num; i++) { Cat someCat = new Cat(); catArray[i] = someCat; } Cat[]目录=新目录[num] for(int i=0;i
Cat[] catArray = new Cat[num]
for (int i = 0; i < num; i++) {
Cat someCat = new Cat();
catArray[i] = someCat;
}
Cat[]目录=新目录[num]
for(int i=0;i
方法2
Cat[] catArray = new Cat[num]
for (int i = 0; i < num; i++) {
catArray[i] = new Cat();
}
Cat[]目录=新目录[num]
for(int i=0;i
上述两种初始化和填充对象数组的方法在内存使用和/或性能方面是否有明显区别?Java中的对象总是在堆中分配,而它们的地址在堆栈中 因此,使用方法1或方法2实际上并没有什么区别:在方法1中,您只是将地址复制了
num
倍。这不会给您带来任何性能问题
编译器甚至可能优化代码,并等效地运行方法1和方法2
从编程的角度来看,方法1并没有真正意义:
someCat
从未被使用,并且在for循环之后无法访问。在for循环中,您只需使用catArray[i]
就可以访问新的Cat,编译器可能会捕获并减少任何性能问题,从而消除任何开销。如果我需要进一步配置对象,我可能会使用第一种方法,因为引用变量比引用数组元素更容易,但这是个人偏好如果你以毫秒为增量生活,可能会有明显的区别,但没有实际的区别,而不是把时间花在过早的优化上。对于您的示例,以您和您的同事都能最清楚理解的方式编写代码。