加載->驗證->準備->解析->初始化->使用->卸載java
若是有
public static int count;
相似這樣的變量 【類變量】,分配內存空間的同時初始化一個默認值this
public class LoadStudent {
public static int count = Configuration.getInt("studnet.count");
public static Map<String, Student> students;
static {
initStudents();
}
public static void initStudents() {
this.students = new HashMap<String, Student>();
}
}
複製代碼
類初始化的時機:當類被使用的到的時候,如:LoadStudent load = new LoadStudent(); 若是初始化一個類的時候,發現該類有父類,必須先初始化他的父類spa
實現上述初始化類的過程,須要由類加載器來完成,Java中的類加載器有:code
(1)啓動類加載器Bootstrap ClassLoader,啓動JVM,會加載jdk目錄下的lib目錄下的核心類庫cdn
(2)拓展類加載器Extension ClassLoader,啓動JVM,會加載jdk目錄下的lib/ext目錄下的拓展類庫blog
(3)應用程序類加載器Application ClassLoader,加載classpath環境變量哦指定的路徑中的類,能夠理解成加載你寫到的Java代碼到內存內存
(4)自定義類加載器,除了上述幾種類加載器以外,還能夠自定義類加載器get
他們親子層結構關係以下圖:虛擬機
雙親委派機制:簡單來講,子類加載器先會找父類加載器去加載類,找不到的話再由子類去加載string