# re: 一個(gè)關(guān)于java的題目,望高手指導(dǎo)一下 回復(fù) 更多評(píng)論
2008-09-23 08:10 by
c1、c3、cb被回收吧,這幾個(gè)在堆中而且值為null;
story是簡(jiǎn)單類型,在棧中,離開作用域自動(dòng)消失,不需要回收;
# re: 一個(gè)關(guān)于java的題目,望高手指導(dǎo)一下 回復(fù) 更多評(píng)論
2008-09-26 10:36 by
兩個(gè)吧,一個(gè)是c2,一個(gè)是c2里面的story
不同意樓上的說法,注意到story 聲明的是Short,不是short,Short是一個(gè)類,所以story 是一個(gè)對(duì)象,最簡(jiǎn)單的驗(yàn)證就是在main方法中c2.story后打點(diǎn).是能點(diǎn)兒出方法的。
理由
c1肯定是被銷毀了
然后就是CardBoard c3 = c1.go(c2);
看go方法無論什么時(shí)候都是返回null,c3肯定是null了
c2為什么不是null,是考的值傳遞和引用傳遞的知識(shí)
c2存放的是指向new CardBoard()的一個(gè)地址
而c1.go(c2);傳給go方法的是c2的一個(gè)拷貝
既然c2是一個(gè)地址,那么傳給go方法的就是這個(gè)地址的一個(gè)拷貝,也就是一個(gè)副本
雖然副本被傳遞到go方法后被指向了null,但main方法中的c2還老老實(shí)實(shí)指向那個(gè)new CardBoard();
呵呵 ,有些啰嗦
# re: 一個(gè)關(guān)于java的題目,望高手指導(dǎo)一下 回復(fù) 更多評(píng)論
2008-09-28 14:39 by
@豬
謝謝,很有道理!我也是類似的想法.c2只是被拷貝了一個(gè)副本進(jìn)去,真正的c2并沒有被改變,是吧.