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

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

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

    eric-1001c

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

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

    }

    //檢查static成員位置與被調(diào)用的順序的關(guān)系
    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成員位置與被調(diào)用的順序關(guān)系
    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函數(shù)之間被調(diào)用順序的關(guān)系
    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. 當(dāng)首次構(gòu)建ClassInitialization的對(duì)象時(shí)(構(gòu)造器也看成靜態(tài)方法),或者類的靜態(tài)方法/靜態(tài)域首次被訪問(wèn)時(shí),Java解釋器必須查找類路徑,以定位ClassInitialization.class
          2. 然后載入class文件,有關(guān)靜態(tài)的初始化都會(huì)被執(zhí)行,而且只能在首次加載的時(shí)候進(jìn)行一次。在例子中由于靜態(tài)成員Cupboard已經(jīng)加載了bowl4和bowl5,因此在重新new Cupboard的時(shí)候只有Bowl3被加載
          3. 靜態(tài)的初始化順序是按出現(xiàn)順序執(zhí)行的,因此在例子輸出結(jié)果中Bowl(1)在Bowl(2)之前,Bowl(4)在Bowl(5)之前
          4. 當(dāng)用new 創(chuàng)建對(duì)象的時(shí)候,首先將在堆上為對(duì)象分配足夠的存儲(chǔ)空間
          5. 這塊存儲(chǔ)空間會(huì)被清零,即自動(dòng)地把對(duì)象中的所有基本類型數(shù)據(jù)都設(shè)置成了默認(rèn)值,而引用則被設(shè)置成了null。例子中的bowl3會(huì)先被設(shè)置成null(也就是說(shuō)非static的成員初始化都是在static之后的,因此Bowl(3)在Bowl(4)和Bowl(5)之后)
          6. 編譯器會(huì)檢查該類是不是extends于基類,如果是則載入基類。到了基類后,加載順序和1-7一樣
          7. 執(zhí)行所有出現(xiàn)于字段定義處的初始化動(dòng)作。例中bowl3被賦予指向Bowl3對(duì)象的引用
          8. 執(zhí)行構(gòu)造器。
    posted on 2007-07-11 16:07 Eric-1001c 閱讀(188) 評(píng)論(0)  編輯  收藏 所屬分類: ThinkingInJava

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 好吊妞788免费视频播放| 99久久久精品免费观看国产| 在线亚洲v日韩v| 国产亚洲女在线线精品| 日韩a级毛片免费观看| 精品亚洲一区二区三区在线播放 | 风间由美在线亚洲一区| 国产麻豆一精品一AV一免费| AV大片在线无码永久免费| 亚洲白色白色在线播放| 看一级毛片免费观看视频| 国产一区二区三区免费在线观看| 亚洲一区精品无码| 亚洲高清一区二区三区电影| 成全动漫视频在线观看免费高清版下载 | 亚洲一区二区三区日本久久九| 中文字幕无码精品亚洲资源网久久| 国内少妇偷人精品视频免费| 亚洲AV永久纯肉无码精品动漫| 亚洲第一成年网站视频| 免费人成年激情视频在线观看 | 亚洲天然素人无码专区| 91精品国产免费| 亚洲人成无码网WWW| 国产91在线|亚洲| 18禁成人网站免费观看| 亚洲精品无码永久在线观看你懂的| 亚洲国产精品无码久久九九大片 | 国产免费福利体检区久久| 女人18毛片水真多免费播放| 婷婷国产偷v国产偷v亚洲| 国产亚洲精品a在线观看| 免费看又黄又无码的网站 | 亚洲男人的天堂在线| 成年女人18级毛片毛片免费观看| 亚洲成在人线av| 国产一级黄片儿免费看| 亚洲国产精品无码久久久久久曰| 国产AV旡码专区亚洲AV苍井空| 亚洲福利精品一区二区三区| 日本免费一区二区三区四区五六区|