亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2017年12月07日 15:20:57   作者:尚學(xué)堂明輝  
對靜態(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)的代碼,是因為被static修飾的成員都是類成員,會隨著JVM加載類的時候加載而執(zhí)行,而沒有被static修飾的成員也被稱為實例成員,需要創(chuàng)建對象才會隨之加載到堆內(nèi)存。所以靜態(tài)的會優(yōu)先非靜態(tài)的。

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

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

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

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

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

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

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

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

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

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)的注意事項

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

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

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

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

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

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

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

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

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

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

重寫:

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

多態(tài):

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

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

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

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

總結(jié)

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

相關(guān)文章

  • Windows下Java調(diào)用可執(zhí)行文件代碼實例

    Windows下Java調(diào)用可執(zhí)行文件代碼實例

    這篇文章主要介紹了Windows下Java調(diào)用可執(zhí)行文件代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12
  • java多線程關(guān)鍵字final和static詳解

    java多線程關(guān)鍵字final和static詳解

    這篇文章主要介紹了java多線程關(guān)鍵字final和static詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01
  • maven插件maven-assembly-plugin打包歸納文件zip/tar使用

    maven插件maven-assembly-plugin打包歸納文件zip/tar使用

    java項目運行的文件需要jar或者war格式,同時還需要使用Java命令,本文主要介紹了maven插件maven-assembly-plugin打包歸納文件zip/tar使用,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • JAVA 多線程編程之CountDownLatch使用詳解

    JAVA 多線程編程之CountDownLatch使用詳解

    當(dāng)多個線程需要協(xié)調(diào)和同步執(zhí)行任務(wù)時,Java中的CountDownLatch(倒計時門閂)是一個常用的工具類,本文將介紹 CountDownLatch 的基本原理、用法以及示例代碼,需要的朋友可以參考下
    2023-05-05
  • maven工程中jar包瘦身的五種方法

    maven工程中jar包瘦身的五種方法

    這篇文章主要介紹了maven工程中jar包瘦身的五種方法,幫助大家更好的理解和使用maven,感興趣的朋友可以了解下
    2021-02-02
  • 詳解SpringBoot 創(chuàng)建定時任務(wù)(配合數(shù)據(jù)庫動態(tài)執(zhí)行)

    詳解SpringBoot 創(chuàng)建定時任務(wù)(配合數(shù)據(jù)庫動態(tài)執(zhí)行)

    本篇文章主要介紹了SpringBoot 創(chuàng)建定時任務(wù)(配合數(shù)據(jù)庫動態(tài)執(zhí)行),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • Java中的可重入鎖ReentrantLock簡析

    Java中的可重入鎖ReentrantLock簡析

    這篇文章主要介紹了Java中的可重入鎖ReentrantLock簡析,可重入是指同一個線程如果首次獲得了這把鎖,那么因為它是這把鎖的擁有者,因此有權(quán)利再次獲取這把鎖如果是不可重入鎖,那么第二次獲得鎖時,自己也會被鎖擋住,需要的朋友可以參考下
    2023-12-12
  • 淺談Java 中的單元測試

    淺談Java 中的單元測試

    這篇文章主要介紹了Java 中的單元測試的相關(guān)資料,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-09-09
  • 使用Java對數(shù)據(jù)庫進行基本的查詢和更新操作

    使用Java對數(shù)據(jù)庫進行基本的查詢和更新操作

    這篇文章主要介紹了使用Java對數(shù)據(jù)庫進行基本的查詢和更新操作,是Java入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-10-10
  • Mybatis批量插入的三種實現(xiàn)方法

    Mybatis批量插入的三種實現(xiàn)方法

    在日常開發(fā)中,如果要操作數(shù)據(jù)庫的話,或多或少都會遇到批量數(shù)據(jù)的處理,本文主要介紹了Mybatis批量插入的三種實現(xiàn)方法,感興趣的可以了解一下
    2023-10-10

最新評論