一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java中靜態代碼塊與構造方法的執行順序判斷

java中靜態代碼塊與構造方法的執行順序判斷

2021-03-01 14:09尚學堂明輝 Java教程

對靜態代碼塊以及構造函數的執行先后順序,一直很迷惑,直到最近看到一段代碼,發現終于弄懂了,所以這篇文章主要給大家介紹了關于如何判斷java中靜態代碼塊與構造方法的執行順序的相關資料,需要的朋友可以參考下。

前言

靜態代碼優先于非靜態的代碼,是因為被static修飾的成員都是類成員,會隨著JVM加載類的時候加載而執行,而沒有被static修飾的成員也被稱為實例成員,需要創建對象才會隨之加載到堆內存。所以靜態的會優先非靜態的。

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

1,super語句,可能出現以下三種情況:

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

      2)構造方法體的第一行是super語句,則調用相應的父類的構造方法,

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

2,初始化非靜態變量;

3,構造代碼塊。

由此可知,構造代碼塊優先于構造方法的方法體,但是this關鍵字跟super關鍵字不能同時出現,而且只能在代碼的第一行。如果出現了this關鍵字,隱式三步就不會執行。

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

java" id="highlighter_187959">
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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();
 }
 }

父類與子類執行的先后順序

靜態變量的執行特性

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

1.當父類與子類都有靜態代碼塊和構造函數的時候,執行順序如下:

父類靜態代碼塊 > 子類靜態代碼塊

父類構造函數 > 子類構造函數(先有父親,后有孩子)

如果是多級繼承關系的話,最高層的父類首先執行,然后依次遞減

總結:靜態優先執行,父類優先執行

注意:靜態代碼塊是在JVM加載類的時候執行的,而且靜態代碼塊執行且僅執行一次

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

如果有既有直接賦值,也有構造方法賦值,那么根據先后順序執行

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

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

重寫:

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

多態:

父類的引用指向了子類的對象,調用時執行的方法也是子類的方法,父類的方法并不會被執行,

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

看了上面的說明,大家也應該知道上面的程序輸出結果了。

輸出結果為:1a2b2b

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。

原文鏈接:https://segmentfault.com/a/1190000012323629

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 91精品国产高清久久久久久91 | 激情艳妇之性事高h | a∨79成人网 | 亚洲精品国产精品麻豆99 | 欧美腐剧mm在线观看 | 视频一区二区三区在线观看 | 国产成人精品免费午夜 | 国产一级免费片 | 高h喷水荡肉爽文np肉色文 | 国产午夜精品理论片 | aaaa大片| 91次元成年破解版 | 亚洲精品中文字幕久久久久久 | 人人九九 | 九九精品影院 | 九九精品视频在线免费观看 | 啊好痛嗯轻一点免费 | 国产成人高清精品免费5388密 | 国产美女亚洲精品久久久久久 | 农村妇女野战bbxxx农村妇女 | 18xxxx中国| 99久久精品免费看国产一区二区 | 搞逼综合网 | 大学生初次破苞免费视频 | 亚洲女人国产香蕉久久精品 | 秀逼逼 | 日本三级做a全过程在线观看 | 国内精品国语自产拍在线观看55 | 啊用力好大粗黑人小说 | 国产精品久久久久久五月尺 | 欧美日韩免费一区二区在线观看 | 波多野结衣在线观看视频 | 99热久久这里只有精品6国产网 | 91精品91久久久久久 | 撕开老师的丝袜白丝扒开粉嫩的小 | 污污在线免费观看 | 星星动漫无删减在线观看 | 啊啊啊好大在线观看 | 99r视频| 398av影院视频在线 | 国产微拍精品一区 |