執行順序是:先執行“靜態程式碼區塊”,再執行“建構程式碼區塊”,最後執行“建構程式碼區塊”。靜態程式碼區塊是類別層級的,而建構程式碼區塊和建構方法是實例層級的,因而靜態程式碼區塊先執行;又因建構程式碼區塊是獨立的,必須依附載體才能運行,因而建構程式碼區塊需放到構造方法前。
本教學操作環境:windows7系統、java8版、DELL G3電腦。
建構程式碼區塊、靜態程式碼區塊與建構方法是類別中三種不同的程式碼區塊,那麼他們到底有什麼差別呢?
一、三種程式碼區塊簡介
靜態程式碼區塊:用staitc聲明,jvm載入類別時執行,僅執行一次
建構程式碼區塊:類別中直接用{}定義,每一次建立物件時執行。
執行順序優先權:靜態區塊,main(),建構區塊,建構方法。
class A { //构造代码块 { System.out.println("构造代码块A"); } //静态代码块 static { System.out.println("静态代码块A"); } //构造方法 public A() { System.out.println("构造方法A"); } }
二、三者的執行順序
為了弄清楚三者的執行順序,我們對類別 A 進行實例化,分別進行單一實例和多個實例的測試。
2.1 單一實例
class Demo { public static void main(String[] args) { new A(); } }
2.2 多個實例
class Demo { public static void main(String[] args) { new A(); new A(); new A(); } }
#三、繼承體系中的順序
class B extends A { //构造代码块 { System.out.println("构造代码块B"); } //静态代码块 static { System.out.println("静态代码块B"); } //构造方法 public B() { System.out.println("构造方法B"); } } class Demo { public static void main(String[] args) { new B(); } }
四、總結
# 1、在創建物件的過程中,三者的執行順序是:靜態程式碼區塊 --> 建構程式碼區塊 --> 建構方法;
1.靜態程式碼區塊:是在類別的載入過程的第三步驟初始化的時候進行的,主要目的是給類別變數賦予初始值。
2.建構程式碼區塊:是獨立的,必須依附載體才能運行,Java會把構造程式碼區塊放到每個建構方法的前面,用於實例化一些共有的實例變量,減少程式碼量。
3.建構方法:用於實例化變數。1是類別層級的,2、3是實例層級的,自然1要優先23。
在就明白一點:對子類得主動使用會導致對其父類得主動使用,所以儘管實例化的是子類,但也會導致父類的初始化和實例化,且優於子類別執行。
2、每創建一個對象,建構程式碼區塊和建構方法就會執行一次;而不管創建多少個對象,靜態程式碼區塊僅在創建第一個物件時執行一次;
3、建立子類別物件時,子類別的靜態程式碼區塊在父類別的靜態程式碼區塊後面執行,但優先於父類別的建構程式碼區塊和建構方法;
4、建立子類別物件時,子類別的建構程式碼區塊在父類別的建構方法後執行。
相關影片教學推薦:Java影片教學
#以上是靜態程式碼區塊、建構程式碼區塊、建構方法的執行順序是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器