Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:对象数组,两种不同的初始化方法_Java_Arrays_Object_Initialization - Fatal编程技术网

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

Java:对象数组,两种不同的初始化方法,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

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

方法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
方法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,编译器可能会捕获并减少任何性能问题,从而消除任何开销。如果我需要进一步配置对象,我可能会使用第一种方法,因为引用变量比引用数组元素更容易,但这是个人偏好如果你以毫秒为增量生活,可能会有明显的区别,但没有实际的区别,而不是把时间花在过早的优化上。对于您的示例,以您和您的同事都能最清楚理解的方式编写代码。