Re: [問題] 請教一道GC題目
※ 引述《H45 (!H45)》之銘言:
: ※ 引述《LPH66 (ha(ruhi|yate)ism)》之銘言:
: : 我的想法是和原PO一樣
: : 如果真的在第七行就能被GC的話
: : 那下面這段程式 (我多加兩行)
: : public class GC
: : {
: : private Object o;
: ^^^^^^^^^^^^^^^^^
: 設這個Object叫作x
: : private void dosomethingElse(Object obj){o = obj ; }
: : public void dosomething() {
: : Object o = new Object() ;//第5行
: : dosomethingElse(o) ;//第6行
: : o = new Object() ;//第7行
: ^^^^^^^^^^^^^^^^^^
: 設這個Object叫作y
: : doanotherthing();
: : dosomethingElse(null) ;//第8行
: : o = null ;//第9行
: : }//第10行
: : private doanotherthing(){System.out.println(o);} //這裡
: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
: 這邊會印出x
: : }
: : 我標「這裡」的地方到底會印出什麼? 是第五行的物件還是null?
: : 如果是第五行的物件的話
: : 那假如剛好在跑到這之前這物件就已經被GC掉了 那會發生什麼事?
: 所以第七行之後y被GC掉是沒問題的
看來我需要搞懂一件事
x到底是個reference還是它是個物件?
如果x是個reference(我目前的觀念) 那就會有我的問題
但如果x是個物件 那原來的答案就沒問題
(因為此時o=obj;變成物件copy 這個o和那個o就無關了)
在C++裡面的話 x是個物件
但這裡是java 而我剛剛測試的結果是像這樣宣告的成員是個reference
--
実琴:「河野!你真的就這樣被物質慾望給吸引過去了嗎?!」
亨:「只要穿著女裝擺出親切的樣子,所有必要花費就能全免,似乎一點都不壞啊。」
実琴:「難道你沒有男人的尊嚴了嗎?!」
亨:(斷然道)「沒有。在節衣縮食且生活吃緊的學生面前,沒有那種東西。」
--プリンセス・プリンセス 第二話
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 192.192.197.115
討論串 (同標題文章)