首先,在了解jvm加载类之前,我们应该先了解该类中的成分:
一个类中若包含了:(1)静态块 (2)代码块 (3)main方法 (4)构造函数
那么,在java虚拟机里如何加载一个类呢。
通过一个简单的代码运行就可以得出结论:
public class Test{
Test(){
System.out.println("构造方法");
}
static {
System.out.println("静态块");
}
{
System.out.println("实例块");
}
public static void main(String[] args){
System.out.println("main方法");
// new Test;
}
}
在这样的程序中,只会输出:静态块
main方法
因为我们在main中并未实例化一个对象。
因此不会有构造方法的调用,也不会有实例块的调用。
但是 ,如果我们加上注释掉的 new Test;会输出的即为:静态块
main方法
实例块
构造方法
由此,我们可以看出来,JVM加载类时的顺序:静态块——main方法——实例块——构造方法(当然前提是该类中,有main方法,如果没有main函数,就跳过这节,如果有其他的方法,则是什么时候调用,什么时候运行。在构造方法之后。)
因此,可以看出,如果我们想配置什么环境设置,运行前检测环境等功能时,可以将代码加载静态块中。
如果想要校验一些数据,可以再实例块中加入对应代码。