欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2023年08月14日 08:58:13   作者:未期  
這篇文章主要為大家介紹了Java代碼執(zhí)行順序類的初始化場(chǎng)景實(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í),會(huì)對(duì)類Solution進(jìn)行初始化,而類初始化階段,會(huì)對(duì)靜態(tài)變量靜態(tài)代碼塊按照順序執(zhí)行,所以此處會(huì)先執(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í),會(huì)對(duì)類Solution進(jìn)行初始化。
  • 在類Solution內(nèi)部,靜態(tài)變量s1需要new一個(gè)Solution對(duì)象,所以執(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類的對(duì)象s2,new一個(gè)類對(duì)象的應(yīng)該按照靜態(tài)變量——靜態(tài)代碼塊——普通代碼塊——構(gòu)造方法的順序執(zhí)行。但是,由于靜態(tài)變量和靜態(tài)代碼塊在前面已經(jīng)初始化過(guò)了,所以此處不用再做,僅僅執(zhí)行普通代碼塊和構(gòu)造方法。

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

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é)合一張圖(圖源見(jiàn)水?。?/p>

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

相關(guān)文章

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

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

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

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

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

    mybatis plus怎么忽略映射字段

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

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

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

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

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

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

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

    Java中MyBatis的動(dòng)態(tài)語(yǔ)句詳解

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

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

    這篇文章主要介紹了SpringBoot下使用MyBatis-Puls代碼生成器的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(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à)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 入門(mén)到精通Java?SSO單點(diǎn)登錄原理詳解

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

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

最新評(píng)論