" />

最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java基礎(chǔ)之類初始化順序示例解析

 更新時間:2023年10月07日 15:59:08   作者:bug生產(chǎn)者  
這篇文章主要為大家介紹了java基礎(chǔ)之類初始化順序示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

初始化順序

在類中變量定義的順序決定了它們初始化的順序。在創(chuàng)建任何java對象時,都是依次調(diào)用父類非靜態(tài)初始化塊、父類構(gòu)造器執(zhí)行初始化、本類的非靜態(tài)初始化塊、本類構(gòu)造器執(zhí)行初始化

public class House {
    // 構(gòu)造器之前
    Window w1 = new Window(1);
    House(){
        System.out.println("House()");
        Window window = new Window(11);
    }
    // 構(gòu)造器之后
    Window w2 = new Window(2);
    void f(){
        System.out.println("f()");
    }
    Window w3 = new Window(3);
    public static void main(String[] args) {
        House house = new House();
        house.f();
    }
}
public class Window {
    public Window(int mark){
        System.out.println("Window("+mark+")");
    }
}

執(zhí)行結(jié)果

Window(1)
Window(2)
Window(3)
House()
Window(11)
f()

由執(zhí)行結(jié)果可知,在進行對象實例化時先執(zhí)行初始化塊,再執(zhí)行構(gòu)造器主體部分

驗證類加載

public class Initable {
    // 非編譯期常量
    public static final int COUNT =new Random().nextInt(1000);
    static {
        System.out.println("Initable初始化");
    }
}
public class Initable1 {
    // 編譯期常量
    public static final int COUNT = 47;
    static {
        System.out.println("Initable1初始化");
    }
}
public class Initable2 {
    public static int COUNT = 56;
    static {
        System.out.println("Initable2初始化");
    }
}
public class Initable3 {
    public static int COUNT = 33;
    static {
        System.out.println("Initable3初始化");
    }
}
public class Initable4 {
    public static int COUNT = 44;
    static {
        System.out.println("Initable4初始化");
    }
}
public class Test {
    public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException {
        System.out.println("Initable---------------");
        System.out.println(Initable.COUNT);
        System.out.println("Initable1---------------");
        System.out.println(Initable1.COUNT);
        System.out.println("Initable2---------------");
        System.out.println(Initable2.COUNT);
        System.out.println("Initable3---------------");
        Class<Initable3> clazz = Initable3.class;
        System.out.println("Initable4---------------");
        Class.forName("com.zhanghe.study.init.Initable4");
    }
}

結(jié)果:
Initable---------------
Initable初始化
457
Initable1---------------
47
Initable2---------------
Initable2初始化
56
Initable3---------------
Initable4---------------
Initable4初始化

Initable和Initable1結(jié)果分析

對于static final的值是一個編譯期常量的話(如Initable1.COUNT),獲取這個值時不需要對Initable1進行初始化就可以讀取,如果用static final的值不是一個編譯期常量(如Initable.COUNT),訪問這個變量會強制對該類進行初始化

Initable2結(jié)果分析

對于一個僅僅是static修飾的字段而不是final的,在讀取這個字段之前,需要為該字段分配存儲空間以及初始化該存儲空間

Initable3和Initable4結(jié)果分析

使用.class語法不會對類進行初始化,而使用Class.forName()來產(chǎn)生Class引用會直接引發(fā)類的初始化

注意:如果沒有顯式的編寫構(gòu)造器的話,java編譯器會默認提供一個無參構(gòu)造器,但是如果提供了自己的構(gòu)造器,編譯器將不會再生成默認構(gòu)造器。

java基礎(chǔ)/面向?qū)ο?4.java基礎(chǔ)之初始化/

以上就是java基礎(chǔ)之類初始化順序示例解析的詳細內(nèi)容,更多關(guān)于java類初始化的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • jar包打包成exe安裝包的實現(xiàn)

    jar包打包成exe安裝包的實現(xiàn)

    本文主要介紹了jar包打包成exe安裝包的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • 剖析SpringCloud Feign中所隱藏的坑

    剖析SpringCloud Feign中所隱藏的坑

    這篇文章主要為大家介紹了剖析SpringCloud Feign中所隱藏的坑示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • JPA配置方式+逆向工程映射到Entity實體類

    JPA配置方式+逆向工程映射到Entity實體類

    這篇文章主要介紹了JPA配置方式+逆向工程映射到Entity實體類,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java?Swing實現(xiàn)自定義窗口CusFrame

    Java?Swing實現(xiàn)自定義窗口CusFrame

    文章介紹了自定義Swing窗口CusFrame的核心功能,包括移除系統(tǒng)默認標題欄、實現(xiàn)圓角矩形形狀、支持拖拽移動和調(diào)整大小、多屏幕適配以及窗口狀態(tài)管理等功能,最后文章提供了使用示例和注意事項,有需要的小伙伴可以參考下
    2026-05-05
  • Java 其中翻轉(zhuǎn)字符串的實現(xiàn)方法

    Java 其中翻轉(zhuǎn)字符串的實現(xiàn)方法

    這篇文章主要介紹了Java 其中翻轉(zhuǎn)字符串的實現(xiàn)方法,需要的朋友可以參考下
    2014-02-02
  • Java編程接口調(diào)用的作用及代碼分享

    Java編程接口調(diào)用的作用及代碼分享

    這篇文章主要介紹了Java編程接口調(diào)用的作用及代碼分享,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • 很多人竟然不知道Java線程池的創(chuàng)建方式有7種

    很多人竟然不知道Java線程池的創(chuàng)建方式有7種

    本文主要介紹了很多人竟然不知道Java線程池的創(chuàng)建方式有7種,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Spring實戰(zhàn)之獲得Bean本身的id操作示例

    Spring實戰(zhàn)之獲得Bean本身的id操作示例

    這篇文章主要介紹了Spring實戰(zhàn)之獲得Bean本身的id操作,結(jié)合實例形式分析了spring獲取Bean本身id的相關(guān)配置與實現(xiàn)技巧,需要的朋友可以參考下
    2019-11-11
  • Java String中移除空白字符的多種方式匯總

    Java String中移除空白字符的多種方式匯總

    這篇文章主要給大家介紹了關(guān)于Java String中移除空白字符的多種方式,文中通過圖文介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • java 實現(xiàn)數(shù)組擴容與縮容案例

    java 實現(xiàn)數(shù)組擴容與縮容案例

    這篇文章主要介紹了java 實現(xiàn)數(shù)組擴容與縮容案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02

最新評論

始兴县| 汉川市| 咸阳市| 南丰县| 新巴尔虎右旗| 锡林郭勒盟| 隆子县| 宾川县| 宁强县| 曲沃县| 尼勒克县| 独山县| 清丰县| 明光市| 盐山县| 天峨县| 通许县| 金寨县| 襄汾县| 泾阳县| 屯留县| 屯昌县| 乌恰县| 抚州市| 谢通门县| 平江县| 新津县| 巴林左旗| 华亭县| 凌海市| 南乐县| 旺苍县| 武威市| 万安县| 淮阳县| 东安县| 黄陵县| 上饶市| 漳平市| 祁门县| 新化县|