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的构造方法代码块*************");
}
}
所以程序运行的结果为