Given:
          When //do Stuff  is reached,how many objects are eligible for GC.
          class CardBoard{
               Short story 
          = 5;
               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 Stuff
             }

          }

          高手幫解釋一下,謝謝了.

          Feedback

          # re: 一個(gè)關(guān)于java的題目,望高手指導(dǎo)一下  回復(fù)  更多評論   

          2008-09-23 08:10 by sofot
          c1、c3、cb被回收吧,這幾個(gè)在堆中而且值為null;
          story是簡單類型,在棧中,離開作用域自動(dòng)消失,不需要回收;

          # re: 一個(gè)關(guān)于java的題目,望高手指導(dǎo)一下  回復(fù)  更多評論   

          2008-09-26 10:36 by
          兩個(gè)吧,一個(gè)是c2,一個(gè)是c2里面的story
          不同意樓上的說法,注意到story 聲明的是Short,不是short,Short是一個(gè)類,所以story 是一個(gè)對象,最簡單的驗(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ù)  更多評論   

          2008-09-28 14:39 by yxc
          @豬
          謝謝,很有道理!我也是類似的想法.c2只是被拷貝了一個(gè)副本進(jìn)去,真正的c2并沒有被改變,是吧.

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
          博客園   IT新聞   Chat2DB   C++博客   博問  
           

          posts - 5, comments - 10, trackbacks - 0, articles - 0

          Copyright © yxc

          主站蜘蛛池模板: 韶山市| 平谷区| 衡阳县| 盐山县| 万全县| 三穗县| 济南市| 弥勒县| 和顺县| 宁波市| 青田县| 苍溪县| 洛隆县| 湟源县| 和田县| 米泉市| 西盟| 关岭| 宾川县| 隆回县| 建瓯市| 萝北县| 紫阳县| 广安市| 南靖县| 民丰县| 武宣县| 德化县| 哈密市| 永仁县| 侯马市| 岳阳市| 左贡县| 盘锦市| 盐亭县| 紫阳县| 综艺| 三河市| 榆社县| 静海县| 金寨县|