java中的類的加載、鏈接、初始化

同一類的全部實例的靜態變量共享用一塊內存區。java

但兩個jvm之間並不會共享數據。類被加載以後,系統爲之生成一個對應的class對象。jvm

1.類的加載spa

將類的class文件讀入內存,並建立class對象。對象

2.鏈接接口

鏈接的過程分爲三步:內存

(1)驗證虛擬機

被加載的類的內部結構是否正確、協調。編譯

(2)準備class

爲類變量分配內存並設置默認初始值。變量

(3)解析

將類的二進制數據中的符號引用替換成直接引用。 

3.初始化

虛擬機負責對類進行初始化,主要對類變量進行初始化。

    1.聲明類變量時指定初始值。

     2.使用靜態初始化塊爲類變量。

jvm初始化一個類包含如下幾個步驟:

1.若是這個類尚未被加載和鏈接,則先加載並鏈接該類。

2假如該類的直接父類尚未被初始化則先初始化其直接父類。

 

 

那麼系統在何時纔會初始化類尼?

當java程序首次經過下面6種方式使用類或者接口時,系統會初始化該類和接口的。

(1)建立類的實例,包括new操做符來建立實例,經過反射來建立,反序列。

(2)調用某個類的類方法(靜態方法)

(3)訪問某個類或接口的類變量或爲該類變量賦值。

注:對於final型的類變量,若是該類變量的值在編譯時就能夠肯定下來。不會致使類的初始化。

相關文章
相關標籤/搜索