什么時候類加載 。第一次需要使用類信息時加載。
類加載的原則:延遲加載,能不加載就不加載。
觸發類加載的幾種情況:
(1)、調用靜態成員時,會加載靜態成員真正所在的類及其父類。
通過子類調用父類的靜態成員時,只會加載父類而不會加載子類
(2)、第一次 new 對象的時候 加載(第二次再 new 同一個類時,不需再加載)。
(3)、加載子類會先加載父類。(覆蓋父類方法時所拋出的異常不能超過父類定義的范圍)
如果靜態屬性有 final 修飾時,則不會加載,當成常量使用
例:public static final int a =123;
但是如果上面的等式右值改成表達式(且該表達式在編譯時不能確定其值)時則會加載類。
例:public static final int a = math.PI
如果訪問的是類的公開靜態常量,那么如果編譯器在編譯的時候能確定這個常量的值,就不會被加載;
如果編譯時不能確定其值的話,則運行時加載