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變數函式
- 關於Static程式碼塊、匿名程式碼塊、構造器的小擴充C程式
- Java中靜態程式碼塊、構造程式碼塊、建構函式、普通程式碼塊Java函式
- Java普通程式碼塊,構造程式碼塊,靜態程式碼塊區別,執行順序的程式碼例項Java
- Java 學習(09)--方法過載/建構函式/static 變數Java函式變數
- Java中構造方法,構造程式碼塊和靜態程式碼塊執行順序詳解Java構造方法
- 嬰兒的出生為你解惑建構函式和構造程式碼塊函式
- ConcurrentHashMap(一):常量,成員變數,靜態程式碼塊,內部類,spread函式,tabAt函式等詳解HashMap變數函式BAT
- 構造程式碼塊
- 11-程式碼塊和變數的作用域變數
- 物件與引用,static關鍵字,程式碼塊,包,訪問許可權修飾符物件訪問許可權
- Java static方法塊只獲取一次物件控制程式碼供全域性使用Java物件
- Sanic static() 方法/函式函式
- let 宣告的變數,只在程式碼塊內有效變數
- 程式碼塊
- 夯實Java基礎系列7:Java 程式碼塊和執行順序Java
- 五:程式碼塊
- java 程式碼塊Java
- 通過7個函式解密區塊鏈(附程式碼)函式解密區塊鏈
- 61行程式碼構建最簡單區塊鏈行程區塊鏈
- 反射修改 static final 變數反射變數
- Java 中的程式碼塊Java
- Java中的程式碼塊Java
- 建立派生類物件,建構函式的執行順序物件函式
- java中的程式碼塊(初始化塊)Java
- js函式和變數的執行順序【易錯】JS函式變數
- 靜態程式碼塊
- Java - 26 程式碼塊Java
- Union Find程式碼塊
- JS常用程式碼塊JS
- Go 程式碼塊與作用域,變數遮蔽問題詳解Go變數
- 程式初始(二)——程式優先順序,環境變數變數
- Pycharm程式碼塊的設定PyCharm
- 構造和解構函式呼叫順序函式
- 靜態程式碼塊類載入時並不會執行
- 在繼承當中這些方法及程式碼塊執行順序是什麼樣的繼承