1. 程式人生 > >深入了解java虛擬機---類加載機制----初始化階段

深入了解java虛擬機---類加載機制----初始化階段

機制 類加載機制 初始 定義 lan tro 過程 懶加載 類加載

準備階段是給變量賦系統的初始值。而初始化階段就是給變量賦程序員自己設的值

初始化階段是<clinit>()方法的執行過程。過程如下

1.編輯器收集所有的賦值動作和靜態塊合並形成<clinit>方法。收集是按照代碼出現的順序決定的。並且靜態初始化塊只能訪問定義在之前的變量,對於在之後的變量可以賦值,但是不能訪問

2.先執行父類的<clinit>方法,再執行本類的<clinit>方法。而且不需要顯式調用,虛擬機會保證父類<clinit>方法先執行。虛擬機執行的第一個<clinit>方法是java.lang.object

註:沒有賦值操作和靜態初始化塊的類沒有<clinit>方法

除了類,還有接口。接口可以有賦值.操作。但不同的是不需要先執行父接口的<clinit>方法,只有在用到後才執行(有點像懶加載)

深入了解java虛擬機---類加載機制----初始化階段