Java-数组创建和内存使用
这是一个相当基本的问题,但这里有一个问题:使用这两种技术创建数组时,有什么真正的区别吗(除了编写一个数组需要更多的时间这一事实) 或Java-数组创建和内存使用,java,arrays,Java,Arrays,这是一个相当基本的问题,但这里有一个问题:使用这两种技术创建数组时,有什么真正的区别吗(除了编写一个数组需要更多的时间这一事实) 或 此外,就内存使用而言,在我的第一个示例中,数组声明是否已经为三个double分配了空间(在这种情况下,后面的三行实际上不会增加内存使用)?没有区别,内存使用将完全相同。它读取第二个方法的方式几乎与读取第一个方法的方式完全相同。它创建的对象也完全相同,因此执行时间和内存使用量都不会有差异。内存使用量将与自动装箱相同,自动装箱将创建与您相同的双s 直接初始化将更快,因
此外,就内存使用而言,在我的第一个示例中,数组声明是否已经为三个double分配了空间(在这种情况下,后面的三行实际上不会增加内存使用)?没有区别,内存使用将完全相同。它读取第二个方法的方式几乎与读取第一个方法的方式完全相同。它创建的对象也完全相同,因此执行时间和内存使用量都不会有差异。内存使用量将与自动装箱相同,自动装箱将创建与您相同的
双s
直接初始化将更快,因为数组将立即填充,而在第一种情况下,将首先创建具有null
值的数组,然后将其逐个填充,每个数组也需要索引范围检查,还需要索引值处理(0、1、2-在直接初始化中,您根本不使用索引值,它们是隐式的)。这是相同的。内存使用相同。不,没有。只是在以后(后面的3行)这将增加内存使用量。但是,这两种方法的内存使用量都相同。请参见我的第一个示例中的当数组充满空值时,它是否仍然实际使用了3倍的内存?或者,在我在后续行中实际创建3倍的新内存之前,不会发生这种情况?是的,会发生。当您引用<代码>Double
array,它已经能够存储对Double
s的引用,因此它已经占用了所需的内存。
Double[] array = new Double[3];
array[0] = new Double(1.0);
array[1] = new Double(2.0);
array[2] = new Double(3.0);
Double[] array = new Double[]{1.0, 2.0, 3.0}