Java类初始化的时机

1.当虚拟机启动时,加载用户指定的main方法所在的类。

2.当在main方法遇到了new关键字时,初始化new指令的目标类。

3.当遇到静态方法调用时,初始化静态方法所在的类。

4.当遇到静态字段调用时,初始化静态方法所在的类。

5.子类的初始化时会先触发父类的初始化。

6.使用反射调用某个类时,会初始化该类。

7.如果一个接口定义了default方法(jdk1.8新特性),那么直接实现或者间接实现该接口的类的初始化,会触发该接口的初始化。

测试:

执行class文件时,可以通过JVM参数 -verbose:class 查看类加载的先后顺序。

测试第一条和第二条。

public class TestClassLoader{
	public static void main(String[] args){
		Demo1 demo1 = new Demo1();
	}
}

public class Demo1{
	
	
}

猜你喜欢

转载自blog.csdn.net/ZY4444444/article/details/85919666