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

詳解Java中的實(shí)例初始化塊(IIB)

 更新時(shí)間:2018年10月16日 14:31:42   投稿:laozhang  
在本篇文章里我們針對(duì)Java中的實(shí)例初始化塊(IIB)做想詳細(xì)分析,有需要的朋友們可以跟著學(xué)習(xí)參考下。

在 Java 語(yǔ)言中的類初始化塊 文章中我們簡(jiǎn)單的介紹了下 Java 中的實(shí)例初始化塊 ( IIB )。不過(guò)我覺(jué)得介紹的有點(diǎn)簡(jiǎn)單了,于是,再寫(xiě)一篇文章詳細(xì)介紹下吧。

Java 語(yǔ)言中,存在三種操作:方法 、構(gòu)造函數(shù) 和 初始化塊。

其中初始化塊又分為 實(shí)例初始化塊 ( IIB ) 和 靜態(tài)初始化塊。本章節(jié),我們主要介紹實(shí)例初始化塊。

實(shí)例初始化塊 用于初始化實(shí)例變量。

實(shí)例初始化塊 會(huì)在初始化類的一個(gè)實(shí)例時(shí)執(zhí)行,而且在構(gòu)造函數(shù)之前就執(zhí)行。并且每次創(chuàng)建類的對(duì)象時(shí)它們都會(huì)執(zhí)行。

實(shí)例化塊的語(yǔ)法

實(shí)例初始化塊一般放在構(gòu)造函數(shù)之前,使用大括號(hào) {} 擴(kuò)起來(lái)的代碼。語(yǔ)法結(jié)構(gòu)一般如下

class JavaTester 
{ 
  // 實(shí)例化塊 
  { 
    System.out.println("IIB block"); 
  } 
   
  // 構(gòu)造函數(shù)
  JavaTester() 
  { 
    System.out.println("Constructor Called"); 
  } 
  public static void main(String[] args) 
  { 
    JavaTester a = new JavaTester(); 
  } 
}

注意,實(shí)例化塊并不是類的必須。只是一個(gè)可選項(xiàng)。用于抽出構(gòu)造函數(shù)的公共部分單獨(dú)執(zhí)行而已。

這段代碼是可以編譯運(yùn)行的,運(yùn)行結(jié)果如下

[yufei@www.twle.cn java]$ javac JavaTester.java && java JavaTester
IIB block
Constructor Called

一個(gè)類中包含多個(gè)實(shí)例初始化塊

類中的 實(shí)例初始化塊 并不是類所必須的,而且,不限數(shù)量。一個(gè)類既可以沒(méi)有實(shí)例初始化塊,也可以有多個(gè)實(shí)例初始化塊。

如果一個(gè)類有多個(gè)實(shí)例初始化塊,那么它們會(huì)按照順序從上到下依次執(zhí)行,也就是說(shuō),定義在類頂部的實(shí)例初始化塊最先執(zhí)行。

我們來(lái)看一段代碼,下面的類 JavaTester 定義了多個(gè)實(shí)例初始化塊。

class JavaTester 
{ 
  { 
    System.out.println("IIB1 block 1 "); 
  } 
   
  { 
    System.out.println("IIB2 block 2"); 
  } 
    
  JavaTester() 
  { 
    System.out.println("Constructor Called"); 
  } 
    
  { 
    System.out.println("IIB3 block 3"); 
  } 
   
  public static void main(String[] args) 
  { 
    JavaTester a = new JavaTester(); 
  } 
}

運(yùn)行上面這段代碼,輸出結(jié)果如下

[yufei@www.twle.cn java]$ javac JavaTester.java && java JavaTester
IIB1 block 1 
IIB2 block 2
IIB3 block 3
Constructor Called

父類中的初始化塊

在 Java 語(yǔ)言的繼承體系中,父類同樣可以有初始化塊,而且數(shù)量不限。

父類的實(shí)例初始化塊在子類的構(gòu)造函數(shù)中調(diào)用 super() 之后立即運(yùn)行。編譯器會(huì)在執(zhí)行當(dāng)前類的實(shí)例初始化塊之前先執(zhí)行父類的實(shí)例初始化塊。

是不是很繞口,我們寫(xiě)一段代碼來(lái)演示下

class B 
{ 
  B() 
  { 
    System.out.println("B-Constructor Called"); 
  } 
  
  { 
    System.out.println("B-IIB block"); 
  } 
  
}
 
public class JavaTester extends B 
{ 
  { 
    System.out.println("JavaTester IIB1 block 1 "); 
  } 
   
  { 
    System.out.println("JavaTester IIB2 block 2"); 
  } 
    
  JavaTester() 
  { 
    super(); 
    System.out.println("JavaTester-Constructor Called");
  } 
    
  { 
    System.out.println("JavaTester IIB3 block 3"); 
  } 
   
  public static void main(String[] args) 
  { 
    JavaTester a = new JavaTester(); 
  } 
}

運(yùn)行以上范例,輸出結(jié)果如下

[yufei@www.twle.cn java]$ javac JavaTester.java && java JavaTester
B-IIB block
B-Constructor Called
JavaTester IIB1 block 1 
JavaTester IIB2 block 2
JavaTester IIB3 block 3
JavaTester-Constructor Called

從運(yùn)行的結(jié)果來(lái)看,當(dāng)創(chuàng)建類 JavaTester 的對(duì)象時(shí),編譯器嘗試執(zhí)行類 JavaTester 的構(gòu)造函數(shù)。但因?yàn)樗幸粋€(gè)父類,在發(fā)現(xiàn)了 super() 語(yǔ)句后,就轉(zhuǎn)而先執(zhí)行父類的構(gòu)造函數(shù)。

因此,在繼承體系中,實(shí)例初始化塊和構(gòu)造函數(shù)的執(zhí)行順序如下

執(zhí)行父類的實(shí)例初始化塊

執(zhí)行父類的構(gòu)造函數(shù)

執(zhí)行當(dāng)前類的實(shí)例初始化塊

執(zhí)行當(dāng)前類的構(gòu)造函數(shù)

實(shí)例初始化塊的要點(diǎn)

我們一起來(lái)回顧下實(shí)例初始化塊的要點(diǎn)。

每次創(chuàng)建新實(shí)例時(shí)都會(huì)運(yùn)行實(shí)例初始化塊

初始化塊按它們?cè)陬愔谐霈F(xiàn)的順序運(yùn)行

如果存在父類,則首先會(huì)實(shí)例化父類然后在調(diào)用當(dāng)前類的實(shí)例初始化塊,最后再調(diào)用當(dāng)前類的構(gòu)造函數(shù)。

相關(guān)文章

  • Spring Boot2.0 @ConfigurationProperties使用詳解

    Spring Boot2.0 @ConfigurationProperties使用詳解

    這篇文章主要介紹了Spring Boot2.0 @ConfigurationProperties使用詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • Java在高并發(fā)場(chǎng)景下實(shí)現(xiàn)點(diǎn)贊計(jì)數(shù)器

    Java在高并發(fā)場(chǎng)景下實(shí)現(xiàn)點(diǎn)贊計(jì)數(shù)器

    點(diǎn)贊計(jì)數(shù)器的本質(zhì)就是對(duì)某個(gè)變量在高并發(fā)情況下的修改,這篇文章主要為大家介紹了Java實(shí)現(xiàn)點(diǎn)贊計(jì)數(shù)器的示例代碼,感興趣的小伙伴可以了解一下
    2023-06-06
  • Spring中的SpringData詳細(xì)說(shuō)明

    Spring中的SpringData詳細(xì)說(shuō)明

    這篇文章主要介紹了Spring中的SpringData詳細(xì)說(shuō)明,Spring Data 是Spring 的一個(gè)子項(xiàng)目, 旨在統(tǒng)一和簡(jiǎn)化對(duì)各類型持久化存儲(chǔ), 而不拘泥于是關(guān)系型數(shù)據(jù)庫(kù)還是NoSQL 數(shù)據(jù)存儲(chǔ),需要的朋友可以參考下
    2023-11-11
  • java 反射getClass .class 的使用方法示例

    java 反射getClass .class 的使用方法示例

    這篇文章主要介紹了java 反射getClass .class 的使用方法,結(jié)合實(shí)例形式分析了java類反射機(jī)制的相關(guān)操作技巧,需要的朋友可以參考下
    2019-11-11
  • java多線程之火車(chē)售票系統(tǒng)模擬實(shí)例

    java多線程之火車(chē)售票系統(tǒng)模擬實(shí)例

    下面小編就為大家?guī)?lái)一篇java多線程之火車(chē)售票系統(tǒng)模擬實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • mybatis的映射xml中動(dòng)態(tài)設(shè)置orderby方式

    mybatis的映射xml中動(dòng)態(tài)設(shè)置orderby方式

    這篇文章主要介紹了mybatis的映射xml中動(dòng)態(tài)設(shè)置orderby方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 詳解Lombok快速上手(安裝、使用與注解參數(shù))

    詳解Lombok快速上手(安裝、使用與注解參數(shù))

    這篇文章主要介紹了詳解Lombok快速上手(安裝、使用與注解參數(shù)) ,這里整理了一些日常編碼中能遇到的所有關(guān)于它的使用詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • java構(gòu)造器 默認(rèn)構(gòu)造方法及參數(shù)化構(gòu)造方法

    java構(gòu)造器 默認(rèn)構(gòu)造方法及參數(shù)化構(gòu)造方法

    構(gòu)造器也叫構(gòu)造方法、構(gòu)造函數(shù),是一種特殊類型的方法,負(fù)責(zé)類中成員變量(域)的初始化。構(gòu)造器的用處是在創(chuàng)建對(duì)象時(shí)執(zhí)行初始化,當(dāng)創(chuàng)建一個(gè)對(duì)象時(shí),系統(tǒng)會(huì)為這個(gè)對(duì)象的實(shí)例進(jìn)行默認(rèn)的初始化,下面文章將進(jìn)入講解,需要的朋友可以參考下
    2021-10-10
  • Java實(shí)現(xiàn)圖片上傳至服務(wù)器功能(FTP協(xié)議)

    Java實(shí)現(xiàn)圖片上傳至服務(wù)器功能(FTP協(xié)議)

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)圖片上傳至服務(wù)器功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • SpringBoot中的@EnableConfigurationProperties注解原理及用法

    SpringBoot中的@EnableConfigurationProperties注解原理及用法

    在SpringBoot中,@EnableConfigurationProperties注解是一個(gè)非常有用的注解,它可以用于啟用對(duì)特定配置類的支持,在本文中,我們將深入探討@EnableConfigurationProperties注解,包括它的原理和如何使用,需要的朋友可以參考下
    2023-06-06

最新評(píng)論

黑山县| 博白县| 汕尾市| 靖宇县| 玛多县| 沙湾县| 福海县| 曲靖市| 卓尼县| 探索| 历史| 大城县| 庆安县| 宁安市| 岢岚县| 福贡县| 铅山县| 兖州市| 仙桃市| 浠水县| 江源县| 福贡县| 萍乡市| 大宁县| 重庆市| 诸城市| 密云县| 天门市| 三原县| 聂荣县| 义乌市| 海晏县| 梅河口市| 时尚| 凤山县| 屏东市| 安泽县| 宝丰县| 海丰县| 白河县| 乐安县|