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

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

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

    eric-1001c

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      3 隨筆 :: 45 文章 :: 12 評論 :: 0 Trackbacks
    1)類成員的初始化
    class Bowl{
        Bowl(
    int marker){
            System.out.println(
    "Bowl("+marker+")");
        }

        
    void f1(int marker){
            System.out.println(
    "f1("+marker+")");
        }

    }

    //檢查static成員位置與被調用的順序的關系
    class Table{
        
    static Bowl bowl1 = new Bowl(1);//before constructor
        Table(){
            System.out.println(
    "Table()");
            bowl2.f1(
    1);
        }

        
    void f2(int marker){
            System.out.println(
    "f2("+marker+")");
        }

        
    static Bowl bowl2 = new Bowl(2);//after constructor
    }

    //檢查static和normal成員位置與被調用的順序關系
    class Cupboard {
        Bowl bowl3 
    = new Bowl(3);       // normal field
        static Bowl bowl4 = new Bowl(4); //static field
        Cupboard(){
            System.out.println(
    "cupboard()");
            bowl4.f1(
    2);
        }

        
    void f3(int marker){
            System.out.println(
    "f3("+marker+")");
        }

        
    static Bowl bowl5 = new Bowl(5); //after constructor
    }

    //檢查static與main函數之間被調用順序的關系
    public class ClassInitialization {
        
    public static void main(String[] args) {
            System.out.println(
    "Creating new Cupboard() in main");
            
    new Cupboard();
            System.out.println(
    "Creating new Cupboard()in main");
            
    new Cupboard();
            
            table.f2(
    1);
            cupboard.f3(
    1);
        }

        
    static Table table = new Table();
        
    static Cupboard cupboard = new Cupboard();
    }
    //output
    Bowl(1)
    Bowl(2)
    Table()
    f1(1)
    Bowl(4)
    Bowl(5)
    Bowl(3)
    cupboard()
    f1(2)
    Creating new Cupboard() in main
    Bowl(3)
    cupboard()
    f1(2)
    Creating new Cupboard()in main
    Bowl(3)
    cupboard()
    f1(2)
    f2(1)
    f3(1)
       
          1. 當首次構建ClassInitialization的對象時(構造器也看成靜態方法),或者類的靜態方法/靜態域首次被訪問時,Java解釋器必須查找類路徑,以定位ClassInitialization.class
          2. 然后載入class文件,有關靜態的初始化都會被執行,而且只能在首次加載的時候進行一次。在例子中由于靜態成員Cupboard已經加載了bowl4和bowl5,因此在重新new Cupboard的時候只有Bowl3被加載
          3. 靜態的初始化順序是按出現順序執行的,因此在例子輸出結果中Bowl(1)在Bowl(2)之前,Bowl(4)在Bowl(5)之前
          4. 當用new 創建對象的時候,首先將在堆上為對象分配足夠的存儲空間
          5. 這塊存儲空間會被清零,即自動地把對象中的所有基本類型數據都設置成了默認值,而引用則被設置成了null。例子中的bowl3會先被設置成null(也就是說非static的成員初始化都是在static之后的,因此Bowl(3)在Bowl(4)和Bowl(5)之后)
          6. 編譯器會檢查該類是不是extends于基類,如果是則載入基類。到了基類后,加載順序和1-7一樣
          7. 執行所有出現于字段定義處的初始化動作。例中bowl3被賦予指向Bowl3對象的引用
          8. 執行構造器。
    posted on 2007-07-11 16:07 Eric-1001c 閱讀(181) 評論(0)  編輯  收藏 所屬分類: ThinkingInJava
    主站蜘蛛池模板: 亚洲国产精品综合久久网络| 国产一级做a爱免费视频| 久久青青草原亚洲AV无码麻豆| 人成免费在线视频| 国产亚洲人成网站在线观看| 99麻豆久久久国产精品免费| 亚洲av午夜福利精品一区| 99久久精品免费精品国产| 亚洲大香伊人蕉在人依线| 久久久久国产精品免费免费搜索| 亚洲一级毛片视频| 免费无码看av的网站| 老湿机一区午夜精品免费福利| 亚洲国产婷婷综合在线精品 | 免费看搞黄视频网站| 亚洲第一极品精品无码久久| 亚洲欧洲免费视频| 学生妹亚洲一区二区| 免费一级成人毛片| 嫩草在线视频www免费看| 91午夜精品亚洲一区二区三区| 成全影视免费观看大全二| 羞羞视频在线观看免费| 亚洲AV无码国产丝袜在线观看| 大学生一级毛片免费看| 美女裸免费观看网站| 亚洲成在人天堂在线| 免费无码又爽又刺激高潮| jzzjzz免费观看大片免费| 亚洲第一页在线播放| 免费国产人做人视频在线观看| 另类免费视频一区二区在线观看| 亚洲欧洲国产精品久久| 亚洲av手机在线观看| 亚洲视频免费观看| 免费一级全黄少妇性色生活片| 亚洲国产第一页www| 国产一级做a爱免费视频| 日韩插啊免费视频在线观看 | 国产AV无码专区亚洲AV毛网站| 成**人免费一级毛片|