static變數,static程式碼塊,建構函式,程式碼塊等的載入順序
public class Main {
public Main() {
System.out.println("construct invoke"); // 執行順序6
}
static int i = 4; // 執行順序1
static {
i++;
System.out.println("first static invoke i = " + i); // 執行順序2
}
private int j = 0; // new 物件之後才會開始執行 執行順序4
{
System.out.println("匿名程式碼塊執行" + j); // new 之後才執行 執行順序5
}
static {
System.out.println("second static invoke"); // 執行順序3
}
static void fun() {
System.out.println("call static function"); // 只有在呼叫的時候才會執行
}
public static void main(String [] args) {
new Main();
Main.fun();
}
}
執行結果:
- 在類載入階段,先順序執行static變數的賦值
- 順序執行static程式碼塊(static程式碼塊只有在類載入的時候,才會執行,發生在類載入的初始化階段,putstatic、getstatic、invokestatic、new指令一定會觸發初始化階段)
以下程式碼塊只發生在例項物件時,並且沒例項化一次物件,都會執行一輪
- 先順序執行內部變數賦值
- 順序執行匿名程式碼塊
- 執行建構函式
靜態方法只有在呼叫的時候,會有執行。
相關文章
- static程式碼塊、構造程式碼塊、建構函式以及Java類初始化順序C程式函式Java
- Java中建構函式、靜態程式碼塊、程式碼塊的執行順序Java函式
- Java static變數、作用域、建構函式初始化順序Java變數函式
- java static 與 static靜態程式碼塊Java
- 關於Static程式碼塊、匿名程式碼塊、構造器的小擴充C程式
- Java中靜態程式碼塊、構造程式碼塊、建構函式、普通程式碼塊Java函式
- 建構函式、this、static函式
- Java 學習(09)--方法過載/建構函式/static 變數Java函式變數
- C語言中的 static變數、static函式C語言變數函式
- Java普通程式碼塊,構造程式碼塊,靜態程式碼塊區別,執行順序的程式碼例項Java
- static函式塊中如何呼叫外部xml引數?函式XML
- 函式的靜態變數 static函式變數
- Java中構造方法,構造程式碼塊和靜態程式碼塊執行順序詳解Java構造方法
- 嬰兒的出生為你解惑建構函式和構造程式碼塊函式
- 靜態程式碼塊、構造程式碼塊、構造方法構造方法
- static變數變數
- 構造程式碼塊
- ConcurrentHashMap(一):常量,成員變數,靜態程式碼塊,內部類,spread函式,tabAt函式等詳解HashMap變數函式BAT
- nls引數、環境變數以及函式等起作用的順序!變數函式
- 11-程式碼塊和變數的作用域變數
- 面試題思考:try 程式碼塊中含 return 語句時,程式碼執行順序面試題
- java的static塊執行時機Java
- Sanic static() 方法/函式函式
- Java static方法塊只獲取一次物件控制程式碼供全域性使用Java物件
- 物件與引用,static關鍵字,程式碼塊,包,訪問許可權修飾符物件訪問許可權
- 程式碼塊
- PHP類的靜態(static)方法和靜態(static)變數PHP變數
- 夯實Java基礎系列7:Java 程式碼塊和執行順序Java
- static靜態變數的理解變數
- Spring 注入static變數Spring變數
- C++建構函式初始化順序C++函式
- C語言nice()函式:改變程式優先順序C語言函式
- jQuery函式的等價原生函式程式碼示例jQuery函式
- 變形金剛的能量方塊(含程式碼)
- java 程式碼塊Java
- 五:程式碼塊
- 61行程式碼構建最簡單區塊鏈行程區塊鏈
- 通過7個函式解密區塊鏈(附程式碼)函式解密區塊鏈