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

java中靜態(tài)代碼塊與構(gòu)造方法的執(zhí)行順序判斷

 更新時(shí)間:2017年12月07日 15:20:57   作者:尚學(xué)堂明輝  
對(duì)靜態(tài)代碼塊以及構(gòu)造函數(shù)的執(zhí)行先后順序,一直很迷惑,直到最近看到一段代碼,發(fā)現(xiàn)終于弄懂了,所以這篇文章主要給大家介紹了關(guān)于如何判斷java中靜態(tài)代碼塊與構(gòu)造方法的執(zhí)行順序的相關(guān)資料,需要的朋友可以參考下。

前言

靜態(tài)代碼優(yōu)先于非靜態(tài)的代碼,是因?yàn)楸籹tatic修飾的成員都是類成員,會(huì)隨著JVM加載類的時(shí)候加載而執(zhí)行,而沒有被static修飾的成員也被稱為實(shí)例成員,需要?jiǎng)?chuàng)建對(duì)象才會(huì)隨之加載到堆內(nèi)存。所以靜態(tài)的會(huì)優(yōu)先非靜態(tài)的。

執(zhí)行構(gòu)造器(構(gòu)造方法)的時(shí)候,在執(zhí)行方法體之前存在隱式三步:

1,super語句,可能出現(xiàn)以下三種情況:

      1)構(gòu)造方法體的第一行是this語句,則不會(huì)執(zhí)行隱式三步,

      2)構(gòu)造方法體的第一行是super語句,則調(diào)用相應(yīng)的父類的構(gòu)造方法,

      3)構(gòu)造方法體的第一行既不是this語句也不是super語句,則隱式調(diào)用super(),即其父類的默認(rèn)構(gòu)造方法,這也是為什么一個(gè)父類通常要提供默認(rèn)構(gòu)造方法的原因;

2,初始化非靜態(tài)變量;

3,構(gòu)造代碼塊。

由此可知,構(gòu)造代碼塊優(yōu)先于構(gòu)造方法的方法體,但是this關(guān)鍵字跟super關(guān)鍵字不能同時(shí)出現(xiàn),而且只能在代碼的第一行。如果出現(xiàn)了this關(guān)鍵字,隱式三步就不會(huì)執(zhí)行。

先看看下面幾個(gè)類,然后判斷它們的輸出:

public class A {

 static{
  System.out.print(1);
 }
 public A(){
  System.out.print(2);
 }
 }

 public class B extends A{

 static{
  System.out.print("a");
 }
 public B(){
  System.out.print("b");
 }
 }

 public class C {

 public static void main(String[] args){
  A a = new B();
  a = new B();
 }
 }

父類與子類執(zhí)行的先后順序

靜態(tài)變量的執(zhí)行特性

方法重寫(override)的注意事項(xiàng)

1.當(dāng)父類與子類都有靜態(tài)代碼塊和構(gòu)造函數(shù)的時(shí)候,執(zhí)行順序如下:

父類靜態(tài)代碼塊 > 子類靜態(tài)代碼塊

父類構(gòu)造函數(shù) > 子類構(gòu)造函數(shù)(先有父親,后有孩子)

如果是多級(jí)繼承關(guān)系的話,最高層的父類首先執(zhí)行,然后依次遞減

總結(jié):靜態(tài)優(yōu)先執(zhí)行,父類優(yōu)先執(zhí)行

注意:靜態(tài)代碼塊是在JVM加載類的時(shí)候執(zhí)行的,而且靜態(tài)代碼塊執(zhí)行且僅執(zhí)行一次

2.在調(diào)用類中的方法時(shí),在方法體執(zhí)行之前,首先要對(duì)類中的成員變量進(jìn)行賦值,如果代碼中沒有賦具體的值,也有默認(rèn)值。成員變量的賦值順序按照前后順序進(jìn)行。

如果有既有直接賦值,也有構(gòu)造方法賦值,那么根據(jù)先后順序執(zhí)行

3.重寫(Override) 重載(Overload)

重載是方法名字,返回類型一致,唯一不同的是方法的參數(shù)不同(參數(shù)類型不同,或者參數(shù)類型不同)

重寫:

  • 發(fā)生方法重寫的兩個(gè)方法返回值,方法名,參數(shù)列表必須完全一致
  • 子類拋出的異常不能超過父類相應(yīng)的方法拋出的異常
  • 子類方法的訪問級(jí)別不能低于父類相應(yīng)方法的訪問級(jí)別(public,package,protected, private)

多態(tài):

父類的引用指向了子類的對(duì)象,調(diào)用時(shí)執(zhí)行的方法也是子類的方法,父類的方法并不會(huì)被執(zhí)行,

所謂多態(tài)就是父類或者接口類型的引用可以指向子類或者實(shí)現(xiàn)該接口的類的實(shí)例(對(duì)象),

看了上面的說明,大家也應(yīng)該知道上面的程序輸出結(jié)果了。

輸出結(jié)果為:1a2b2b

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • SpringBoot+Redission實(shí)現(xiàn)排行榜功能的示例代碼

    SpringBoot+Redission實(shí)現(xiàn)排行榜功能的示例代碼

    這篇文章主要介紹了基于SpringBoot+Redission實(shí)現(xiàn)排行榜功能,實(shí)現(xiàn)一個(gè)排行榜,要求按照分?jǐn)?shù)和達(dá)成這個(gè)分?jǐn)?shù)的時(shí)間排序,即相同分?jǐn)?shù)下,時(shí)間早的在上面,文中通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2024-05-05
  • Java中I/O輸入輸出的深入講解

    Java中I/O輸入輸出的深入講解

    Java的I/O技術(shù)可以將數(shù)據(jù)保存到文本文件、二進(jìn)制文件甚至是ZIP壓縮文件中,以達(dá)到永久性保存數(shù)據(jù)的要求,下面這篇文章主要給大家介紹了關(guān)于Java中I/O輸入輸出的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • 詳解Mybatis極其(最)簡(好)單(用)的一個(gè)分頁插件

    詳解Mybatis極其(最)簡(好)單(用)的一個(gè)分頁插件

    這篇文章主要介紹了詳解Mybatis極其(最)簡(好)單(用)的一個(gè)分頁插件,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。
    2016-12-12
  • SpringBoot中使用 RabbitMQ的教程詳解

    SpringBoot中使用 RabbitMQ的教程詳解

    這篇文章主要介紹了SpringBoot中使用 RabbitMQ的教程詳解,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • SpringMVC實(shí)現(xiàn)文件上傳下載的全過程

    SpringMVC實(shí)現(xiàn)文件上傳下載的全過程

    對(duì)于上傳功能,我們?cè)陧?xiàng)目中是經(jīng)常會(huì)用到的,比如用戶注冊(cè)的時(shí)候,上傳用戶頭像,這個(gè)時(shí)候就會(huì)使用到上傳的功能,而對(duì)于下載使用場景也很常見,下面這篇文章主要給大家介紹了關(guān)于SpringMVC實(shí)現(xiàn)文件上傳下載的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • Spring?AOP?后置通知修改響應(yīng)httpstatus方式

    Spring?AOP?后置通知修改響應(yīng)httpstatus方式

    這篇文章主要介紹了Spring?AOP?后置通知修改響應(yīng)httpstatus方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • postman測試傳入List<String>參數(shù)方式

    postman測試傳入List<String>參數(shù)方式

    這篇文章主要介紹了postman測試傳入List<String>參數(shù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • JPA中@CreatedDate和@LastModifiedDate的使用方式

    JPA中@CreatedDate和@LastModifiedDate的使用方式

    這篇文章主要介紹了JPA中@CreatedDate和@LastModifiedDate的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 使用java + selenium + OpenCV破解騰訊防水墻滑動(dòng)驗(yàn)證碼功能

    使用java + selenium + OpenCV破解騰訊防水墻滑動(dòng)驗(yàn)證碼功能

    這篇文章主要介紹了使用java + selenium + OpenCV破解騰訊防水墻滑動(dòng)驗(yàn)證碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Java連接Oracle數(shù)據(jù)庫完整步驟記錄

    Java連接Oracle數(shù)據(jù)庫完整步驟記錄

    數(shù)據(jù)庫的操作是當(dāng)前系統(tǒng)開發(fā)必不可少的開發(fā)部分之一,下面這篇文章主要給大家介紹了關(guān)于Java連接Oracle數(shù)據(jù)庫的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01

最新評(píng)論

翁源县| 大荔县| 乌拉特中旗| 东明县| 磐安县| 建宁县| 高要市| 庆阳市| 双辽市| 镇江市| 新丰县| 蓬莱市| 新邵县| 广元市| 荆门市| 林州市| 郸城县| 井冈山市| 宜宾市| 清涧县| 蓬安县| 宾川县| 永登县| 广安市| 蚌埠市| 聊城市| 虎林市| 巨鹿县| 卓尼县| 雷波县| 苍山县| 海兴县| 湘阴县| 泽普县| 东兰县| 临泉县| 郴州市| 疏附县| 怀柔区| 晋江市| 成武县|