亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java代碼執(zhí)行順序——類的初始化場景

 更新時(shí)間:2023年08月14日 08:58:13   作者:未期  
這篇文章主要為大家介紹了Java代碼執(zhí)行順序類的初始化場景實(shí)例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

示例分析

例一

public class Solution {
    //public static Solution s1=new Solution();
    public Solution(){
        System.out.println("構(gòu)造方法");
    }
    {
        System.out.println("普通代碼塊:blockA");
    }
    static{
        System.out.println("靜態(tài)代碼塊:blockB");
    }
    public static void main(String[] args) {
        System.out.println("hello");
        //Solution s2=new Solution();
    }
}

結(jié)果:

靜態(tài)代碼塊:blockB
hello

分析

? 由于main函數(shù)是一個(gè)靜態(tài)方法,在調(diào)用這個(gè)靜態(tài)方法時(shí),會對類Solution進(jìn)行初始化,而類初始化階段,會對靜態(tài)變量靜態(tài)代碼塊按照順序執(zhí)行,所以此處會先執(zhí)行靜態(tài)代碼塊的內(nèi)容,然后輸出”helllo“。

例二

public class Solution {
    public static Solution s1=new Solution();

    public Solution(){
        System.out.println("構(gòu)造方法");
    }

    {
        System.out.println("普通代碼塊:blockA");
    }

    static{
        System.out.println("靜態(tài)代碼塊:blockB");
    }

    public static void main(String[] args) {
        System.out.println("hello");
        //Solution s2=new Solution();
    }
}

結(jié)果:

普通代碼塊:blockA
構(gòu)造方法
靜態(tài)代碼塊:blockB
hello

分析

  • 調(diào)用main靜態(tài)方法時(shí),會對類Solution進(jìn)行初始化。
  • 在類Solution內(nèi)部,靜態(tài)變量s1需要new一個(gè)Solution對象,所以執(zhí)行了相關(guān)的非靜態(tài)的代碼,其中,普通代碼塊的執(zhí)行優(yōu)先于構(gòu)造方法。
  • 在此之后執(zhí)行靜態(tài)代碼塊的代碼,最后輸出"hello"。

例三

public class Solution {
    public static Solution s1=new Solution();

    public Solution(){
        System.out.println("構(gòu)造方法");
    }

    {
        System.out.println("普通代碼塊:blockA");
    }

    static{
        System.out.println("靜態(tài)代碼塊:blockB");
    }

    public static void main(String[] args) {
        System.out.println("hello");
        Solution s2=new Solution();
    }
}

結(jié)果:

普通代碼塊:blockA
構(gòu)造方法
靜態(tài)代碼塊:blockB
hello
普通代碼塊:blockA
構(gòu)造方法

分析:

  • 在例二的基礎(chǔ)上,又有Solution類的對象s2,new一個(gè)類對象的應(yīng)該按照靜態(tài)變量——靜態(tài)代碼塊——普通代碼塊——構(gòu)造方法的順序執(zhí)行。但是,由于靜態(tài)變量和靜態(tài)代碼塊在前面已經(jīng)初始化過了,所以此處不用再做,僅僅執(zhí)行普通代碼塊和構(gòu)造方法。

普通new一個(gè)對象的步驟

public class Solution {
    //public static Solution s1=new Solution();
    public Solution(){
        System.out.println("構(gòu)造方法");
    }
    {
        System.out.println("普通代碼塊:blockA");
    }
    static{
        System.out.println("靜態(tài)代碼塊:blockB");
    }
    public static void main(String[] args) {
        //System.out.println("hello");
        Solution s2=new Solution();
    }
}

結(jié)果:

靜態(tài)代碼塊:blockB
普通代碼塊:blockA
構(gòu)造方法

分析:

  • 按照靜態(tài)變量——靜態(tài)代碼塊——普通代碼塊——構(gòu)造方法的順序執(zhí)行。

包含父類的情況

父類

class FatherClass {
    // 靜態(tài)變量 
    public static String parent_StaticField = "父----靜態(tài)變量";
    // 變量
    public String parent_Field = "父類----普通變量";
    // 靜態(tài)初始化塊
    static {
        System.out.println(parent_StaticField);
        System.out.println("父類------靜態(tài)初始化塊");
    }
    // 初始化塊 
    {
        System.out.println(parent_Field);
        System.out.println("父類-----初始化塊");
    }
    // 構(gòu)造器 
    public FatherClass() {
        System.out.println("父類--構(gòu)造器");
    }
}

 子類

public class SubSon extends FatherClass  {
    // 靜態(tài)變量
    public static String son_StaticField = "子類--靜態(tài)變量";
    // 變量 
    public String son_Field = "子類--變量";
    // 靜態(tài)初始化塊
    static {
        System.out.println(son_StaticField);
        System.out.println("子類--靜態(tài)初始化塊");
    }
    // 初始化塊 
    {
        System.out.println(son_Field);
        System.out.println("子類--初始化塊");
    }
    // 構(gòu)造器
    public SubSon(){
        System.out.println( "子類--構(gòu)造器" );
    }
    public static void main(String[] args) {
        System.out.println("子類-----main方法");
        new SubSon();
    }
}

結(jié)果:

父----靜態(tài)變量
父類------靜態(tài)初始化塊
子類--靜態(tài)變量
子類--靜態(tài)初始化塊
子類-----main方法
父類----普通變量
父類-----初始化塊
父類--構(gòu)造器
子類--變量
子類--初始化塊
子類--構(gòu)造器

結(jié)合一張圖(圖源見水?。?/p>

以上就是Java代碼執(zhí)行順序——類的初始化場景的詳細(xì)內(nèi)容,更多關(guān)于Java執(zhí)行順序類初始化場景的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • SpringCloud-Alibaba-Sentinel服務(wù)降級,熱點(diǎn)限流,服務(wù)熔斷

    SpringCloud-Alibaba-Sentinel服務(wù)降級,熱點(diǎn)限流,服務(wù)熔斷

    這篇文章主要介紹了SpringCloud-Alibaba-Sentinel服務(wù)降級,熱點(diǎn)限流,服務(wù)熔斷,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • JedisPool資源池優(yōu)化方法

    JedisPool資源池優(yōu)化方法

    這篇文章主要介紹了JedisPool資源池優(yōu)化方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-03-03
  • mybatis plus怎么忽略映射字段

    mybatis plus怎么忽略映射字段

    這篇文章主要介紹了mybatis plus怎么忽略映射字段,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • 淺談Java中static關(guān)鍵字的作用

    淺談Java中static關(guān)鍵字的作用

    這篇文章主要介紹了Java中static關(guān)鍵字的作用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 代碼分析Java中線程的等待與喚醒

    代碼分析Java中線程的等待與喚醒

    本篇文章給大家分享了關(guān)于Java中線程的等待與喚醒的知識點(diǎn)內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。
    2018-10-10
  • Java中的類加載器_動力節(jié)點(diǎn)Java學(xué)院整理

    Java中的類加載器_動力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要為大家詳細(xì)介紹了Java中類加載器的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Java中MyBatis的動態(tài)語句詳解

    Java中MyBatis的動態(tài)語句詳解

    這篇文章主要介紹了Java中MyBatis的動態(tài)語句詳解,動態(tài) SQL 是 MyBatis 的強(qiáng)大特性之一,通過不同參數(shù)生成不同的 SQL,可以動態(tài)地對數(shù)據(jù)持久層進(jìn)行操作,而不需要每個(gè)數(shù)據(jù)訪問操作都要進(jìn)行手動地拼接 SQL 語句,需要的朋友可以參考下
    2023-08-08
  • SpringBoot下使用MyBatis-Puls代碼生成器的方法

    SpringBoot下使用MyBatis-Puls代碼生成器的方法

    這篇文章主要介紹了SpringBoot下使用MyBatis-Puls代碼生成器的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • mybatis QueryWrapper的條件構(gòu)造之a(chǎn)pply、last、select解析

    mybatis QueryWrapper的條件構(gòu)造之a(chǎn)pply、last、select解析

    這篇文章主要介紹了mybatis QueryWrapper的條件構(gòu)造之a(chǎn)pply、last、select,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 入門到精通Java?SSO單點(diǎn)登錄原理詳解

    入門到精通Java?SSO單點(diǎn)登錄原理詳解

    這篇文章主要介紹了入門到精通Java?SSO單點(diǎn)登錄原理詳解,本文主要對SSO單點(diǎn)登錄與CAS、OAuth2.0兩種授權(quán)協(xié)議的關(guān)系和原理進(jìn)行詳細(xì)說明
    2022-09-09

最新評論