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

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

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

    eric-1001c

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      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成員位置與被調(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的對象時(構(gòu)造器也看成靜態(tài)方法),或者類的靜態(tài)方法/靜態(tài)域首次被訪問時,Java解釋器必須查找類路徑,以定位ClassInitialization.class
          2. 然后載入class文件,有關(guān)靜態(tài)的初始化都會被執(zhí)行,而且只能在首次加載的時候進行一次。在例子中由于靜態(tài)成員Cupboard已經(jīng)加載了bowl4和bowl5,因此在重新new Cupboard的時候只有Bowl3被加載
          3. 靜態(tài)的初始化順序是按出現(xiàn)順序執(zhí)行的,因此在例子輸出結(jié)果中Bowl(1)在Bowl(2)之前,Bowl(4)在Bowl(5)之前
          4. 當(dāng)用new 創(chuàng)建對象的時候,首先將在堆上為對象分配足夠的存儲空間
          5. 這塊存儲空間會被清零,即自動地把對象中的所有基本類型數(shù)據(jù)都設(shè)置成了默認值,而引用則被設(shè)置成了null。例子中的bowl3會先被設(shè)置成null(也就是說非static的成員初始化都是在static之后的,因此Bowl(3)在Bowl(4)和Bowl(5)之后)
          6. 編譯器會檢查該類是不是extends于基類,如果是則載入基類。到了基類后,加載順序和1-7一樣
          7. 執(zhí)行所有出現(xiàn)于字段定義處的初始化動作。例中bowl3被賦予指向Bowl3對象的引用
          8. 執(zhí)行構(gòu)造器。
    posted on 2007-07-11 16:07 Eric-1001c 閱讀(181) 評論(0)  編輯  收藏 所屬分類: ThinkingInJava
    主站蜘蛛池模板: 天天操夜夜操免费视频| 免费无码一区二区三区| 黄色三级三级免费看| 黄页网址大全免费观看12网站| 日美韩电影免费看| 在线亚洲97se亚洲综合在线| 亚洲第一视频网站| 亚洲一区二区三区免费在线观看| 美女隐私免费视频看| 免费看国产曰批40分钟| 亚洲日本在线观看| 无人视频免费观看免费视频| 免费不卡在线观看AV| 亚洲黑人嫩小videos| 免费看一级毛片在线观看精品视频| 国产伦精品一区二区三区免费迷| 看成年女人免费午夜视频| 成年人网站免费视频| 亚洲国产成人久久一区久久| 亚洲美女视频一区| 91在线视频免费播放| 久久久久久久尹人综合网亚洲| 亚洲国产精品无码观看久久| 99久久久国产精品免费牛牛四川| 亚洲成a人片77777群色| 一级毛片免费毛片一级毛片免费| 亚洲日韩VA无码中文字幕| 亚洲乱码中文字幕在线| 91精品国产免费入口| 亚洲成a人片77777kkkk| 日本成年免费网站| 亚洲依依成人精品| 亚洲精品国产免费| 亚洲天天做日日做天天欢毛片| 国产无人区码卡二卡三卡免费 | 亚洲成色在线综合网站| 很黄很黄的网站免费的| 乱淫片免费影院观看| 午夜理伦剧场免费| 亚洲av永久无码精品秋霞电影秋| 性xxxxx免费视频播放|