java 運行類的入口是mian方法,主類在運行的時候加載其他的類,加載的時候,會優先加載父類.靜態方法優先於構造方法先執行.
jar包或war包裏的類不是一次性全部加載的,是使用到時才加載。
package com.bonc.jvm;
/**
* @Classname TestDynamicLoad
* @Description TODO
* @Date 2020/6/14 11:05
* @Created by sz
*/
public class TestDynamicLoad {
static {
System.out.println("**************加載靜態代碼塊*************");
}
public static void main(String[] args) {
new A();
System.out.println("*************加載測試類************");
B b=null;
}
}
class A extends C{
static {
System.out.println("**************加載A的靜態代碼塊*************");
}
public A(){
System.out.println("**************加載A的構造方法代碼塊*************");
}
}
class B{
static {
System.out.println("**************加載B的靜態代碼塊*************");
}
public B(){
System.out.println("**************加載B的構造方法代碼塊*************");
}
}
class C{
static {
System.out.println("**************加載C的靜態代碼塊*************");
}
public C(){
System.out.println("**************加載C的構造方法代碼塊*************");
}
}
所以程序運行的結果爲