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

淺談Java變量的初始化順序詳解

 更新時(shí)間:2013年06月04日 16:54:12   作者:  
本篇文章是對(duì)Java變量的初始化順序進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下

規(guī)則1(無(wú)繼承情況下):
對(duì)于靜態(tài)變量、靜態(tài)初始化塊、變量、初始化塊、構(gòu)造器,它們的初始化順序依次是
(靜態(tài)變量、靜態(tài)初始化塊)>(變量、初始化塊)>構(gòu)造器
證明代碼:

復(fù)制代碼 代碼如下:

public class InitialOrderTest {
    // 靜態(tài)變量
    public static String staticField = "靜態(tài)變量";
    // 變量
    public String field = "變量";
    // 靜態(tài)初始化塊
    static {
        System.out.println(staticField);
        System.out.println("靜態(tài)初始化塊");
    }
    // 初始化塊
    {
        System.out.println(field);
        System.out.println("初始化塊");
    }
    // 構(gòu)造器
    public InitialOrderTest() {
        System.out.println("構(gòu)造器");
    }
    public static void main(String[] args) {
        new InitialOrderTest();
    }
}

結(jié)果顯示:
靜態(tài)變量
靜態(tài)初始化塊
變量
初始化塊
構(gòu)造器

規(guī)則2(有繼承情況下):
子類(lèi)的靜態(tài)變量和靜態(tài)初始化塊的初始化是在父類(lèi)的變量、初始化塊和構(gòu)造器初始化之前就完成

復(fù)制代碼 代碼如下:

class Parent {
    // 靜態(tài)變量
    public static String p_StaticField = "父類(lèi)--靜態(tài)變量";
    // 變量
    public String p_Field = "父類(lèi)--變量";
    // 靜態(tài)初始化塊
    static {
        System.out.println(p_StaticField);
        System.out.println("父類(lèi)--靜態(tài)初始化塊");
    }
    // 初始化塊
    {
        System.out.println(p_Field);
        System.out.println("父類(lèi)--初始化塊");
    }
    // 構(gòu)造器
    public Parent() {
        System.out.println("父類(lèi)--構(gòu)造器");
    }
}//如果你想把這兩個(gè)類(lèi)放在同一個(gè)文件且名字起為SubClass, 父類(lèi)前不能加public
public class SubClass extends Parent { 
    // 靜態(tài)變量
    public static String s_StaticField = "子類(lèi)--靜態(tài)變量";
    // 變量
    public String s_Field = "子類(lèi)--變量";
    // 靜態(tài)初始化塊
    static {
        System.out.println(s_StaticField);
        System.out.println("子類(lèi)--靜態(tài)初始化塊");
    }
    // 初始化塊
    {
        System.out.println(s_Field);
        System.out.println("子類(lèi)--初始化塊");
    }
    // 構(gòu)造器
    public SubClass() {
        System.out.println("子類(lèi)--構(gòu)造器");
    }
    // 程序入口
    public static void main(String[] args) {
        new SubClass();
    }
}

結(jié)果顯示:
父類(lèi)--靜態(tài)變量
父類(lèi)--靜態(tài)初始化塊
子類(lèi)--靜態(tài)變量
子類(lèi)--靜態(tài)初始化塊
父類(lèi)--變量
父類(lèi)--初始化塊
父類(lèi)--構(gòu)造器
子類(lèi)--變量
子類(lèi)--初始化塊
子類(lèi)--構(gòu)造器

規(guī)則2(靜態(tài)變量和靜態(tài)初始化塊):
靜態(tài)變量和靜態(tài)初始化塊是依照他們?cè)陬?lèi)中的定義順序進(jìn)行初始化的。同樣,變量和初
始化塊也遵循這個(gè)規(guī)律。

復(fù)制代碼 代碼如下:

public class testOrder {
    // 靜態(tài)變量
    public static TestA a = new TestA();
    public TestC c = new TestC();
    // 靜態(tài)變量
    public static TestB b = new TestB();
    public testOrder(){
        System.out.println("in constract");
    }
    // 靜態(tài)初始化塊
    static {
        System.out.println("靜態(tài)初始化塊");
    }
    public static void main(String[] args) {
        new testOrder();
    }
}
class TestA {
    public TestA() {
        System.out.println("Test--A");
    }
}
class TestB {
    public TestB() {
        System.out.println("Test--B");
    }
}
class TestC {
    public TestC() {
        System.out.println("Test--C");
    }
}

結(jié)果顯示:
Test--A
Test--B
靜態(tài)初始化塊
Test--C
in constract

個(gè)人總結(jié):
先靜后動(dòng),先父后子,從上到下,先變量后構(gòu)造

相關(guān)文章

  • Java實(shí)現(xiàn)駝峰下劃線互轉(zhuǎn)的使用示例

    Java實(shí)現(xiàn)駝峰下劃線互轉(zhuǎn)的使用示例

    駝峰和下劃線互轉(zhuǎn)場(chǎng)景是在不同命名規(guī)范的情況下,需要進(jìn)行字段名稱(chēng)的轉(zhuǎn)換,本文就來(lái)介紹一下Java實(shí)現(xiàn)駝峰下劃線互轉(zhuǎn)的使用示例,感興趣的可以了解一下
    2023-12-12
  • 深入理解JavaWeb中過(guò)濾器與監(jiān)聽(tīng)器的應(yīng)用

    深入理解JavaWeb中過(guò)濾器與監(jiān)聽(tīng)器的應(yīng)用

    這篇文章主要介紹了JavaWeb中過(guò)濾器與監(jiān)聽(tīng)器的應(yīng)用,過(guò)濾器能夠?qū)ζヅ涞恼?qǐng)求到達(dá)目標(biāo)之前或返回響應(yīng)之后增加一些處理代碼,監(jiān)聽(tīng)器是一個(gè)接口內(nèi)容由我們實(shí)現(xiàn),會(huì)在特定時(shí)間被調(diào)用,感興趣想要詳細(xì)了解可以參考下文
    2023-05-05
  • Spring?Cloud?整合?nacos實(shí)現(xiàn)動(dòng)態(tài)配置中心的詳細(xì)步驟

    Spring?Cloud?整合?nacos實(shí)現(xiàn)動(dòng)態(tài)配置中心的詳細(xì)步驟

    這篇文章主要介紹了Spring?Cloud?整合?nacos?實(shí)現(xiàn)動(dòng)態(tài)配置中心,整合步驟是通過(guò)添加依賴(lài)新建nacos配置,本文分步驟通過(guò)實(shí)例代碼給大家詳細(xì)講解,需要的朋友可以參考下
    2022-10-10
  • SpringBoot整合Mybatis之各種查詢(xún)、模糊查詢(xún)、批量刪除、動(dòng)態(tài)表名操作

    SpringBoot整合Mybatis之各種查詢(xún)、模糊查詢(xún)、批量刪除、動(dòng)態(tài)表名操作

    這篇文章主要介紹了SpringBoot整合Mybatis之各種查詢(xún)、模糊查詢(xún)、批量刪除、動(dòng)態(tài)表名,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-12-12
  • springmvc組件中的HandlerMapping解析

    springmvc組件中的HandlerMapping解析

    這篇文章主要介紹了springmvc九大組件中的HandlerMapping解析,HandlerMapping表示的是一個(gè)URL與一個(gè)Handler(可以簡(jiǎn)單的理解為Controller中有@RequestMapping注解的方法)之間的映射關(guān)系,需要的朋友可以參考下
    2023-09-09
  • java基礎(chǔ)知識(shí) super和this使用解析

    java基礎(chǔ)知識(shí) super和this使用解析

    這篇文章主要介紹了java基礎(chǔ)知識(shí) super和this使用解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Mybatis如何按順序查詢(xún)出對(duì)應(yīng)的數(shù)據(jù)字段

    Mybatis如何按順序查詢(xún)出對(duì)應(yīng)的數(shù)據(jù)字段

    這篇文章主要介紹了Mybatis如何按順序查詢(xún)出對(duì)應(yīng)的數(shù)據(jù)字段,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Spring Boot 中application.yml與bootstrap.yml的區(qū)別

    Spring Boot 中application.yml與bootstrap.yml的區(qū)別

    其實(shí)yml和properties文件是一樣的原理,且一個(gè)項(xiàng)目上要么yml或者properties,二選一的存在。這篇文章給大家介紹了Spring Boot 中application.yml與bootstrap.yml的區(qū)別,感興趣的朋友一起看看吧
    2018-04-04
  • SpringBoot多數(shù)據(jù)源切換實(shí)現(xiàn)代碼(Mybaitis)

    SpringBoot多數(shù)據(jù)源切換實(shí)現(xiàn)代碼(Mybaitis)

    實(shí)際工作中我們會(huì)遇到springboot項(xiàng)目初始化啟動(dòng)時(shí)候,不能指定具體連接哪個(gè)數(shù)據(jù)源的時(shí)候,不同的接口連接不同的數(shù)據(jù)源或者前端頁(yè)面指定連接某個(gè)數(shù)據(jù)源等等情況,就會(huì)遇到動(dòng)態(tài)數(shù)據(jù)源切換的問(wèn)題,需要的朋友可以參考下
    2022-04-04
  • java實(shí)現(xiàn)簡(jiǎn)易貪吃蛇游戲

    java實(shí)現(xiàn)簡(jiǎn)易貪吃蛇游戲

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡(jiǎn)易貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12

最新評(píng)論