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