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

圖文詳解Java中class的初始化順序

 更新時(shí)間:2016年08月16日 17:36:43   作者:曉來誰聽風(fēng)雨聲  
網(wǎng)上有很多關(guān)于Java中class的初始化順序文章,但是本文通過圖文更加詳細(xì)的介紹了Java中class的初始化順序,并對class的裝載順序進(jìn)行了講解,下面一起來看看。

class的裝載

在講class的初始化之前,我們來講解下class的裝載順序。

以下摘自《Thinking in Java 4》

由于Java 中的一切東西都是對象,所以許多活動(dòng)

變得更加簡單,這個(gè)問題便是其中的一例。正如下一章會(huì)講到的那樣,每個(gè)對象的代碼都存在于獨(dú)立的文件中。除非真的需要代碼,否則那個(gè)文件是不會(huì)載入的。通常,我們可認(rèn)為除非那個(gè)類的一個(gè)對象構(gòu)造完畢,否則代碼不會(huì)真的載入。由于static 方法存在一些細(xì)微的歧義,所以也能認(rèn)為“類代碼在首次使用的時(shí)候載入”。

首次使用的地方也是static 初始化發(fā)生的地方。裝載的時(shí)候,所有static 對象和static 代碼塊都會(huì)按照本來的順序初始化(亦即它們在類定義代碼里寫入的順序)。當(dāng)然,static 數(shù)據(jù)只會(huì)初始化一次。

簡要的說就是,在類有繼承關(guān)系時(shí),類加載器上溯造型,進(jìn)行相關(guān)類的加載工作。

比如:

Class B extends Class A
當(dāng)我們new B()時(shí),類加載器自動(dòng)加載A的代碼

class的初始化順序

通常是以下這樣的初始化順序:

(static對象和static代碼塊,依據(jù)他們的順序進(jìn)行初始化)>成員變量>構(gòu)造函數(shù)

測試代碼

public class ClassInit {

  /**
   * @Title:       main
   * @Description:   類初始化順序測試
   * @param:       @param args  
   * @return:     void  
   * @throws
   */
  public static void main(String[] args) {
    // TODO Auto-generated method stub    
    new B();
  }

}

class A {
  static{
    System.out.println("A的static代碼塊...");
  }
  public String s1 = prtString("A的成員變量...");
  public static String s2 = prtString("A的static變量...");
  public A(){
    System.out.println("A的構(gòu)造函數(shù)...");
  }

  public static String prtString(String str) {
    System.out.println(str);
    return null;
  }
}

class B extends A{
  public String ss1 = prtString("B的成員變量...");
  public static String ss2 = prtString("B的static變量...");
  public B(){
    System.out.println("B的構(gòu)造函數(shù)...");
  }
  private static A a = new A();
  static{
    System.out.println("B的static代碼塊...");
  }
  {
    System.out.println("代碼塊...");
  }  
}

測試結(jié)果

A的static代碼塊...
A的static變量...
B的static變量...
A的成員變量...
A的構(gòu)造函數(shù)...
B的static代碼塊...
A的成員變量...
A的構(gòu)造函數(shù)...
B的成員變量...
代碼塊...
B的構(gòu)造函數(shù)...

總結(jié)

以上就是Java中class的初始化順序的全部內(nèi)容,希望對大家使用Java能有所幫助。

相關(guān)文章

  • Java 面試題和答案 - (下)

    Java 面試題和答案 - (下)

    本文主要介紹Java 面試題,這里整理了Java面試題關(guān)于JDBC,線程異常處理,Servlet,JSP的知識(shí)的整理,幫助大家理解知識(shí)點(diǎn),便于面試,有興趣的小伙伴可以參考下
    2016-09-09
  • SpringBoot+Vue實(shí)現(xiàn)數(shù)據(jù)添加功能

    SpringBoot+Vue實(shí)現(xiàn)數(shù)據(jù)添加功能

    這篇文章主要介紹了SpringBoot+Vue實(shí)現(xiàn)數(shù)據(jù)添加功能,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Java中使用增強(qiáng)for循環(huán)的實(shí)例方法

    Java中使用增強(qiáng)for循環(huán)的實(shí)例方法

    在本篇文章里小編給大家整理是的關(guān)于Java中如何使用增強(qiáng)for循環(huán)的實(shí)例內(nèi)容以及相關(guān)代碼,需要的朋友們可以學(xué)習(xí)下。
    2019-08-08
  • 基于MapperXML掃描的問題

    基于MapperXML掃描的問題

    這篇文章主要介紹了MapperXML掃描的問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Java面向?qū)ο蟮姆庋b特征深度解析

    Java面向?qū)ο蟮姆庋b特征深度解析

    在面向?qū)ο蟪淌皆O(shè)計(jì)方法中,封裝(英語:Encapsulation)是指一種將抽象性函式接口的實(shí)現(xiàn)細(xì)節(jié)部分包裝、隱藏起來的方法。封裝可以被認(rèn)為是一個(gè)保護(hù)屏障,防止該類的代碼和數(shù)據(jù)被外部類定義的代碼隨機(jī)訪問
    2021-10-10
  • 簡要分析Java的Hibernate框架中的自定義類型

    簡要分析Java的Hibernate框架中的自定義類型

    這篇文章主要介紹了Java的Hibernate框架中的自定義類型,Hibernate是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下
    2016-01-01
  • Java Kafka實(shí)現(xiàn)優(yōu)先級隊(duì)列的示例詳解

    Java Kafka實(shí)現(xiàn)優(yōu)先級隊(duì)列的示例詳解

    在分布式系統(tǒng)中,消息隊(duì)列是一種常見的異步通信機(jī)制,而優(yōu)先級隊(duì)列則是消息隊(duì)列的一種特殊形式,下面我們來看看如何利用Kafka實(shí)現(xiàn)優(yōu)先級隊(duì)列吧
    2025-03-03
  • SpringBoot應(yīng)用自定義logback日志詳解

    SpringBoot應(yīng)用自定義logback日志詳解

    默認(rèn)情況下,SpringBoot內(nèi)部使用logback作為系統(tǒng)日志實(shí)現(xiàn)的框架,將日志輸出到控制臺(tái),不會(huì)寫到日志文件。本篇文章主要講解下如何自定義logabck.xml以及對logback文件中配置做一個(gè)詳解,需要的可以參考一下
    2022-10-10
  • java正則替換img標(biāo)簽中src值的方法

    java正則替換img標(biāo)簽中src值的方法

    今天小編就為大家分享一篇java正則替換img標(biāo)簽中src值的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • SpringBoot3實(shí)戰(zhàn)教程之實(shí)現(xiàn)接口簽名驗(yàn)證功能

    SpringBoot3實(shí)戰(zhàn)教程之實(shí)現(xiàn)接口簽名驗(yàn)證功能

    接口簽名是一種重要的安全機(jī)制,用于確保 API 請求的真實(shí)性、數(shù)據(jù)的完整性以及防止重放攻擊,這篇文章主要介紹了SpringBoot3實(shí)戰(zhàn)教程之實(shí)現(xiàn)接口簽名驗(yàn)證功能,需要的朋友可以參考下
    2025-04-04

最新評論

石家庄市| 宁明县| 连城县| 钦州市| 崇州市| 东乡| 中山市| 嘉善县| 高尔夫| 乐安县| 盘锦市| 永州市| 绵阳市| 广宗县| 茶陵县| 日土县| 锦州市| 泗洪县| 安庆市| 荆门市| 合水县| 施甸县| 滦南县| 霍林郭勒市| 沅陵县| 沂南县| 罗江县| 日照市| 尚志市| 罗源县| 博客| 磐石市| 濉溪县| 应用必备| 武定县| 武山县| 迁西县| 高州市| 通化县| 当阳市| 策勒县|