日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Java對象初始化順序

 縷夢菲煙 2011-09-19
        1. 使用new新建對象時,初始化順序為:靜態(tài)變量>成員變量>構(gòu)造方法。 靜態(tài)初始化塊以靜態(tài)變量對待
        2. 建立類的Class對象,但沒有執(zhí)行new時(如訪問任何靜態(tài)變量、或者調(diào)用靜態(tài)方法、或者調(diào)用Class.forName方法等。使用Class<A> a = A.class則不會觸發(fā))都會進行靜態(tài)變量的初始化。此時成員變量、構(gòu)造方法未初始化。靜態(tài)變量只會被初始化一次。
        3. 同種變量的初始化,按照代碼中的書寫順序進行,無論變量聲明在類頭、方法之間、類尾。
        4. 執(zhí)行構(gòu)造方法時,從祖先至子孫依次進行。“創(chuàng)建過程是由基類'向外'擴散的”。那么如果new一個子類對象,子類構(gòu)造方法中的代碼應在父類靜態(tài)變量>父類成員變量>父類構(gòu)造方法>子類靜態(tài)變量>子類成員變量之后執(zhí)行。

另附think in java 中對于對象創(chuàng)建過程的描述。有助于深入了解:(摘自think in java第三版,機工,第四章)

假設有個名為Dog的類:

        1. 當首次創(chuàng)建類型為Dog的對象時(構(gòu)造器可以看成靜態(tài)方法),或者Dog類的靜態(tài)方法/靜態(tài)域首次被訪問時,Java解釋器必須查找類路徑,以定位Dog.class文件。

        2. 然后載入Dog.class(這將創(chuàng)建一個Class對象), 有關(guān)靜態(tài)初始化的動作都會執(zhí)行。因此,靜態(tài)初始化只在Class對象首次加載的時候執(zhí)行一次。

        3. 當你用new Dog()創(chuàng)建對象的時候,首先在堆上為Dog對象分配足夠高的存儲空間。

        4. 這塊存儲空間會被清零,這就自動的將Dog中的所有基本類型數(shù)據(jù)設置成了默認值(對于數(shù)字來說就是0,對布爾型和字符型也相同),而引用則被設置成了null。

        5. 執(zhí)行所有出現(xiàn)于域定義處的初始化動作。

        6. 執(zhí)行構(gòu)造器。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多