如果我們將一個引用變量傳遞給方法並修改對象的狀態,那麼這些修改是永久性的(請糾正我,如果我錯了)。考慮代碼:通過參考var和GC
class CardBoard {
Short story = 200;
CardBoard go(CardBoard cb) { //....(1)
cb = null;
return cb;
}
public static void main(String[] args) {
CardBoard c1 = new CardBoard();
CardBoard c2 = new CardBoard();
CardBoard c3 = c1.go(c2); //pass c2 into a method ....(2)
c1 = null;
// do Stuff
} }
當在上面的代碼,我們說CB =空和返回CB,不應C2(也C3)現在有空引用? (PS:原始問題要求在「// do stuff」之後有資格獲得gc的對象,答案是2,但我在理解時遇到問題。)
沒有,因爲基準是按值傳遞。關於堆棧溢出(以及網絡上的其他頁面)有很多*問題,詳細討論這些問題。 –