2012-04-24 52 views

回答

6

不,效果是一樣的。從靜態和非靜態方法範圍分配沒有區別。如果你正在考慮在堆棧上分配堆(比如在C/C++中),這種差異在Java中並不突出,並且不會受到你從哪裏調用new的影響。默認情況下,每次使用new時,都是在堆上分配一個對象 - 在現代JVM(Java6及更高版本)中存在一些例外情況,這些例外由escape analysis等優化引起(如果該對象是線程,局部範圍受限)。但是,局部基元變量和引用總是被壓入棧中。