致电"新"与Calling" new"相比,在静态函数内调用调用实例方法

时间:2012-04-24 15:10:06

标签: java new-operator

是一样的吗?或者静态函数中的new是否与实例方法中的new分配不同?

1 个答案:

答案 0 :(得分:6)

不,效果是一样的。从静态方法和非静态方法范围分配之间没有区别。如果您正在考虑在堆栈上进行分配而在堆上进行分配(如在C / C ++中),这种差异在Java中并不那么突出,并且不受您从new调用的位置的影响。默认情况下,每次使用new时,都会在堆上分配一个对象 - 现代JVM(Java6及更高版本)中有一些例外,这些异常是由escape analysis等优化引起的(可能会分配一个对象)在堆栈上,如果它是线程和本地范围限制)。但是,本地原始变量和引用总是被压入堆栈。