2 回答

TA貢獻1865條經驗 獲得超7個贊
但是,這并沒有解釋如何使用 return 關鍵字將在方法中創建的對象(例如數組)返回到調用者的作用域
你可以這樣做的原因是對象不是在堆棧上創建的;只有對它的引用。該數組一直保留在動態分配的內存中,直到它符合垃圾回收條件。當您將方法返回的結果分配給另一個變量或字段時,引用的值會被保留,因此對象會保留在內存中。
返回運算符是否將數組或對象從方法的臨時堆棧移動到調用者的堆棧?
只有引用的值被復制。引用是一個相對較小的對象,其大小僅取決于運行 JVM 的系統。特別是引用的大小不會隨著被引用對象的大小而改變,因此需要復制的數量是有限的。

TA貢獻1784條經驗 獲得超8個贊
需要注意的重要一點是,如果您在方法中返回一個對象并且不保存它,它實際上會被垃圾收集。例如,如果您有:
public int somemethod(){
int myint = 9;
return myint;
}
然后調用someMethod()您的 main 方法,為了將來訪問此返回,您必須存儲它。
public static void main(String [] args){
this.someMethod(); //can't access myInt.
int savedInt = someMethod(); // Saves the value 9 for future access.
}
所以一般來說,當你調用一個方法然后返回類型在該方法從堆棧中移除之前存在時,但是為了將來使用它,你必須將值存儲在一個仍然存在的變量中。
添加回答
舉報