<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 42,comments - 83,trackbacks - 0
            有人問我一個(gè)關(guān)于遞歸的問題, 測試代碼如下:

    TestClass.java
     1 public class TestClass {
     2     
     3     private static TestPrinter printer = null;
     4     
     5     static
     6     {
     7         printStaticInfo("initialize test printer in static");
     8         printer = new TestPrinter();
     9     }
    10     
    11     public TestClass()
    12     {
    13         System.out.println("to construct a TestClass object");
    14     }
    15     
    16     public void printOne()
    17     {
    18         printer.printOne();
    19     }
    20     
    21     public static void printStaticInfo(String s)
    22     {
    23         System.out.println(s);
    24     }
    25 }

    TestPrinter.java
     1 public class TestPrinter {
     2 
     3     private static TestClass tc = null;
     4     
     5       static
     6       {
     7           printStaticInfo("initialize test class in static");
     8           tc = new TestClass();
     9       }
    10 
    11     public TestPrinter()
    12     {
    13         System.out.println("to construct a TestPrinter object");
    14     }
    15           
    16     public void printOne()
    17     {
    18         System.out.println("One");
    19         System.out.println("compile again!");
    20     }
    21     
    22     public static void printStaticInfo(String s)
    23     {
    24         System.out.println(s);
    25     }
    26 }


         他的問題是:如果我new一個(gè)TestClass對(duì)象,然后調(diào)用testClass.printOne(),結(jié)果是什么? 會(huì)不會(huì)造成遞歸調(diào)用?

        當(dāng)然不會(huì),因?yàn)榇a中的所謂的遞歸都是在static域中的,而static域中的內(nèi)容只是在這個(gè)類裝載的時(shí)候調(diào)用,也就是說它的調(diào)用在constructor之前完成,而且在整個(gè)JVM運(yùn)行期間,static域中的內(nèi)容只會(huì)被執(zhí)行一次。當(dāng)然如果這個(gè)類在運(yùn)行期間被GC從PermGen中unload的話,下次該類被裝載的時(shí)候,static域中的內(nèi)容將被重新調(diào)用。

         大家可以想想上面的測試輸出結(jié)果是什么,不要看下面的答案哦

    initialize test printer in static
    initialize test class in static
    to construct a TestClass object
    to construct a TestPrinter object
    to construct a TestClass object
    One
    compile again!

            關(guān)于static域是在裝載期間還是在對(duì)象初始化期間被執(zhí)行,我們可以通過下面的代碼測試:

     1 public class LoaderTest {
     2     
     3     //to evaluate follow codes is invoked during class loading or object initialized
     4     //class laoding: Class.forName();
     5     //object initialized: Object obj = new ClassName();
     6     static
     7     {
     8         int i = 0;
     9         System.out.println("i is initialized in static during class loading");
    10     }
    11 }

            我們可以找個(gè)jsp,在其中加上如下內(nèi)容:
    1   try
    2   {
    3         Class.forName("LoaderTest");
    4   }catch(ClassNotFoundException e)
    5   {
    6   }
        
            好了,上面代碼中我們并沒有去實(shí)例化LoaderTest對(duì)象,而只是動(dòng)態(tài)裝載這個(gè)類,static的內(nèi)容就被輸出了。
    posted on 2008-09-26 12:38 走走停停又三年 閱讀(2361) 評(píng)論(3)  編輯  收藏 所屬分類: Java Technology

    FeedBack:
    # re: 關(guān)于Java中的遞歸調(diào)用
    2008-09-27 10:44 | YYX
    static塊可以說是Class對(duì)象的構(gòu)造函數(shù)  回復(fù)  更多評(píng)論
      
    # re: 關(guān)于Java中的遞歸調(diào)用
    2008-09-28 15:26 | zhuxing
    關(guān)于初始化有兩個(gè)概念:類型初始化和實(shí)例初始化^_^  回復(fù)  更多評(píng)論
      
    # re: 關(guān)于Java中的遞歸調(diào)用
    2013-08-14 22:38 | maco
    遞歸有沒在詳細(xì)的解釋呢  回復(fù)  更多評(píng)論
      
    主站蜘蛛池模板: 亚洲人成网站免费播放| 国产aⅴ无码专区亚洲av麻豆| 亚洲综合国产精品| 一个人看的www免费视频在线观看| 免费A级毛片无码A| 爱情岛论坛免费视频| 免费在线观看黄网| 四虎影视永久在线精品免费| 亚洲AV无码成人精品区大在线 | 亚洲激情黄色小说| 精品国产sm捆绑最大网免费站| 18gay台湾男同亚洲男同| 91久久青青草原线免费| www.亚洲成在线| 日韩免费高清视频网站| 暖暖免费中文在线日本| 亚洲老妈激情一区二区三区| 午夜不卡久久精品无码免费| 亚洲一区二区三区深夜天堂| 最好免费观看韩国+日本| 美女视频黄频a免费大全视频| 亚洲国产综合无码一区二区二三区 | 情侣视频精品免费的国产| 婷婷国产偷v国产偷v亚洲| 亚洲精品NV久久久久久久久久| 久久免费香蕉视频| 亚洲最大的视频网站| 日本免费一区二区三区最新| 一级成人生活片免费看| 日韩亚洲AV无码一区二区不卡| 国产h视频在线观看网站免费| 亚洲1区2区3区精华液| 国产亚洲精久久久久久无码| 青青青国产在线观看免费网站| 国产午夜亚洲精品不卡电影| 亚洲人成网址在线观看| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 亚洲韩国—中文字幕| 麻豆成人精品国产免费| 中文字幕免费在线看| 67194在线午夜亚洲|