jvm類初始化條件

2021-08-25 02:49:29 字數 880 閱讀 3944

1.虛擬機器啟動時,指定乙個要執行的主類,虛擬機會優先初始化這個(帶main方法的)主類

public class testmode 

public static void main(string args)

}

2.通過陣列定義來引用類,不會觸發類的初始化 

class test 

}public class testmode ;

for (int m = 0; m < testmodes.length; m++)

}}

3.訪問乙個類的非final靜態欄位或static方法時(訪問fianl欄位時直接從該類常量池中拿取,並不會造成初始化)

class test 

}public class newtestdemo_1

}結果為 hello 1

4.遇到new、getstatic、putstatic或invokestatic這四條位元組碼指令時

class test 

}public class newtestdemo_1

}

5.使用反射機制等

class test 

}public class newtestdemo_1

}

6.當初始化乙個類的時候,如果發現其父類還沒有進行過初始化,則需要先觸發其父類的初始化

class test01 

}class test02 extends test01

}public class newtestdemo_1

}

JVM 五 類的初始化

7種主動使用和被動使用,會觸發類的初始化 當初始化類的時候,要求父類都已經被初始化,但是這條規則不適用於介面 inte ce public class test06 inte ce threadparent class threadchild implements threadparent在這個例子...

類初始化和例項初始化

乙個類要建立例項需要先載入並初始化該類 main方法所在的類需要先載入和初始化 乙個子類要初始化需要先初始化父類 乙個類初始化就是執行clinit 方法 clinit 方法由靜態類變數顯式賦值 和靜態 塊組成 類變數顯式賦值 和靜態 塊 從上到下順序執行 clinit 方法只執行一次 父類的初始化 ...

類初始化和例項初始化

father public class father father public inttest public static intmethod son public class sonextends father son public inttest public static intmethod...