初始化塊問題
最后一行代碼是再次創建對象,能理解不再執行靜態初始化塊,(即整個程序只執行一次)也明白構造方法會被再執行一次,(及整個程序執行兩次)但是為什么初始化塊也會再執行一次(即為什么初始化塊整個會執行兩次?)?初始化塊不在構造方法里啊,為什么最后初始化塊會執行兩次?
最后一行代碼是再次創建對象,能理解不再執行靜態初始化塊,(即整個程序只執行一次)也明白構造方法會被再執行一次,(及整個程序執行兩次)但是為什么初始化塊也會再執行一次(即為什么初始化塊整個會執行兩次?)?初始化塊不在構造方法里啊,為什么最后初始化塊會執行兩次?
2018-12-31
舉報
2018-12-31
初始化塊作為每個對象的一部分,而不是類的一部分(除非是靜態代碼塊);
因此,每創建一個對象的時候,都會走一次初始化塊;
2019-01-21
每次創建對象Jvm都會編譯一次,而靜態代碼塊Jvm只會編譯一次,初始化代碼塊每次Jvm編譯都會執行的。這個也解釋了為什么第二次創建對象初始化代碼塊會再次執行哦,可以看下Jvm的運行機制,加深理解