类加载的三个阶段——加载、链接以及初始化,类的主动使用和被动使用
生活随笔
收集整理的這篇文章主要介紹了
类加载的三个阶段——加载、链接以及初始化,类的主动使用和被动使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 類加載
1.1 加載:查找并加載字節碼文件。
1.2?鏈接:分為三個階段:①驗證,文件格式驗證:對魔數(保證是字節碼類型文件)驗證以及jdk版本號和當前虛擬機是否匹配;元數據驗證:父類是否可以繼承;是否實現了抽象方法等;字節碼驗證:是否符合規范。②準備:為靜態變量分配內存,并設定默認值;③解析:把類的符號引用轉為直接引用。
1.3?初始化:通過<clinit>方法為類的靜態變量賦予正確的初始值或執行靜態代碼塊邏輯,如果只有靜態成員,但沒有賦值操作,不會有<clinit>方法。靜態代碼塊可以對代碼塊之前的變量讀寫,但只能對代碼塊之后的變量進行寫,不能讀,如下圖。
?
?
2. 類加載的條件——主動使用
①new 對象;②操作靜態成員;③反射;④加載子類;⑤程序入口類
?
3. 類的被動使用不會類加載
3.1 子類調用父類的靜態成員
3.2 創建數組
3.3 訪問final修飾、初始值是字面值
?
4. 靜態成員初始化順序示例
?
總結
以上是生活随笔為你收集整理的类加载的三个阶段——加载、链接以及初始化,类的主动使用和被动使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 当前线程等待某些线程运行结束再执行的几种
- 下一篇: ThreadPoolExecutor线程