- 參考文章
https://www.cnblogs.com/ityouknow/p/5603287.html
- 類的生命周期
- 加載
-
連接配接
2.1 驗證
四個驗證:檔案格式、中繼資料、位元組碼、符号引用
2.2 準備為類的靜态變量配置設定記憶體,并初始化為預設值
2.3 解析把類中的符号引用轉換為直接引用(将指針指向記憶體區域,即覆寫預設值)
-
初始化
3.1
假如類未加載和連接配接,則執行加載和連接配接
3.2假如該類的父類還沒有被初始化,則執行父類初始化
3.3假如類中有初始化語句,則依次執行初始化語句
- 使用
- 解除安裝
- 類加載的途徑
– 從本地系統中直接加載
– 通過網絡下載下傳.class檔案
– 從zip,jar等歸檔檔案中加載.class檔案
–從專有資料庫中提取.class檔案
– 将Java源檔案動态編譯為.class檔案
- 類初始化的時機
-new 一個執行個體
-通路類(接口)中的靜态變量
-調用類(接口)的靜态方法
-反射 如
Class.forName(HungrySingleton.class.getName());
-初始化某個類的子類,父類會先被初始化
-java虛拟機啟動時被标明為啟動類的類(Java Test)
-
總結
類加載在初始化之前,當使用反射的時候類加載已經完成,類的靜态成員變量已經成功指派。