※ 引述《DavyBlue (失意男)》之銘言:
: 給定
: class CardBoard {
: Short story =200;
: CardBoard go(CardBoard cb) {
: cb = null;
: return cb;
: }
: public static void main(String[] args){
: CardBoard c1 = new CardBoard();
: CardBoard c2 = new CardBoard();
: CardBoard c3 = c1.go(c2);
: c1 = null;
: //do something
: }}
: 當到達//do something時 多少物件有資格被自動回收?
: 正解是2個
: 但是我怎麼看都有4個...(雖然選項只有0,1,2,編譯錯誤,balah..)
: 因為go()回傳null c3應該也有資格
: 然後引數傳入go()時cb=null 應該也有資格
: 但是正解只說c1與story有資格 難道是我想太多?
自回
第一題 有new物件只發生在c1 c2指標變數
傳入go()方法後 產生的變化只有 cb先指到與c2同樣的物件
然後指到null
c3是自始至終都只有指到null
只有c1指到的那個物件沒有人指到他 故.... 答案是c1及story
至於story怎麼來的...在初始化後沒人用過他當然能回收...
結果在打完文章後自己就想到了
看來還是要多寫程式=.=
這篇也可以留著讓各位版友參考
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.113.77.108
※ 編輯: DavyBlue 來自: 59.113.77.108 (01/31 23:53)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 5 篇):