一、類的加載過程:
JVM將類加載過程分爲三個步驟:裝載(Load),鏈接(Link)和初始化(Initialize)鏈接又分爲三個步驟。
如圖所示。
1.裝載:
查找並加載類的二進制數據。
2.連接:
驗證:確保被加載類的正確性;
準備:爲類的靜態變量分配內存,並將其初始化爲默認值;
解析:把類中的符號引用轉換爲直接引用;
3.初始化:
爲類的靜態變量賦予正確的初始值。
二、類的初始化
類什麼時候纔會被初始化?
分爲如下步驟:
2、類的初始化,類什麼時候才被初始化:
1)創建類的實例,也就是new一個對象
2)訪問某個類或接口的靜態變量,或者對該靜態變量賦值
3)調用類的靜態方法
4)反射
5)初始化一個類的子類(會首先初始化子類的父類)
6)JVM啓動時標明的啓動類,即文件名和類名相同的那個類
三、類的加載:
指的是將類的.class文件中的二進制數據讀入到內存中,將其放在運行時數據區的方法區內,然後在堆區創建一個這個類Java.lang.Class對象,用來封裝類在方法區類的對象。