更新時間:2022-04-24 10:33:00 來源:動力節(jié)點 瀏覽1400次
在本教程中,動力節(jié)點小編將告訴大家 Java 中各種初??始化塊(如靜態(tài)塊、初始化塊和構(gòu)造函數(shù))的執(zhí)行順序是什么。
大多數(shù)時候,在面試中會問這樣一個問題,以測試候選人對 Java 基礎(chǔ)的基本知識。
讓我們開始教程。
在 Java 中,我們有各種類型的初始化塊,它們是靜態(tài)塊、初始化塊和實例初始化塊。然后有一個構(gòu)造函數(shù)。
讓我們對每種類型的塊做一個簡單的介紹。
每當(dāng)類第一次在 JVM 中加載時,靜態(tài)初始化塊就會運行。
初始化塊
初始化塊類似于靜態(tài)初始化塊,但其中沒有使用靜態(tài)關(guān)鍵字。它只是 { start 和 end } 大括號內(nèi)的一個塊。初始化塊將按照它們在程序中出現(xiàn)的順序運行。
簡單地說,它包含在創(chuàng)建實例時始終執(zhí)行的代碼。初始化塊的主要目的是聲明或初始化類中存在的各種構(gòu)造函數(shù)的公共部分。
實例初始化塊
實例初始化塊是在初始化類時和調(diào)用構(gòu)造函數(shù)之前執(zhí)行的塊。主要用于初始化實例變量。這種類型的塊在構(gòu)造函數(shù)之前執(zhí)行,并且在每次創(chuàng)建類的對象時運行。
這些是Java中的各種初始化塊,現(xiàn)在我們將討論這些塊在Java程序中的執(zhí)行順序是什么。
但是這里要注意的重要一點是,如果這些是兩個或多個靜態(tài)/初始化程序塊,那么它們將按照它們在源代碼中出現(xiàn)的順序執(zhí)行。
讓我們通過一個例子來理解所有這些概念。
package com.initializationializationblocks;
public class InitializationOrderExample {
InitializationOrderExample(int x) {
System.out.println("ONE argument constructor");
}
InitializationOrderExample() {
System.out.println("No argument constructor");
}
static {
System.out.println("1st static initialization");
}
{
System.out.println("1st instance initialization");
}
{
System.out.println("2nd instance initialization");
}
static {
System.out.println("2nd static initialization");
}
public static void main(String[] args) {
new InitializationOrderExample();
new InitializationOrderExample(800);
}
}
輸出
1st static initialization
2nd static initialization
1st instance initialization
2nd instance initialization
No argument constructor
1st instance initialization
2nd instance initialization
ONE argument constructor
這就是本教程的全部內(nèi)容。希望您喜歡本教程并能夠理解 Java 中的各種初始化塊及其執(zhí)行順序。如果大家想了解更相關(guān)知識,不妨來關(guān)注一下動力節(jié)點的Java教程,里面的課程內(nèi)容細致全面,通俗易懂,適合沒有基礎(chǔ)的小伙伴學(xué)習(xí),希望對大家能夠有所幫助哦。
相關(guān)閱讀