Java的類什么情況下被初始化?


 

1.創建類的實例(new 的方式)。訪問某個類或接口的靜態變量,或者對該靜態變量賦值,調用類的靜態方法

2.使用反射的方法對類進行反射調用的時候。

3.當初始化一個類的時候,如果發現其父類還沒有進行初始化,則需先觸發其父類的初始化。

4.當虛擬機啟動時,用戶需指定一個要加載的主類(包含 main() 方法的那個類),虛擬機會先初始化這個主類。

5.當使用 JDK 1.7 的動態語言支持時,如果一個 java.lang.invoke.MethodHandle 實例最后的解析結果 REF_getStatic、REF_putStatic、REF_invokeStatic 的方法句柄,並且這個方法句柄所對應的類沒有進行過初始化,則需先觸發其初始化。

 

Java類的加載是動態的,它並不會一次性將所有類全部加載后再運行,而是保證程序運行的基礎類(像是基類)完全加載到jvm中,至於其他類,則在需要的時候才加載。這當然就是為了節省內存開銷。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM