加载(加载IO流文件,并存储类信息在方法区)->
验证(格式验证,语义分析,操作验证)->
准备(为类中的所有静态变量分配内存空间,并为其设置一个初始值)->
解析(将常量池中的符号引用转为直接引用)->
初始化(将一个类中所有被static关键字标识的代码统一执行一遍,如果执行的是静态变量,那么就会使用用户指定的值覆盖之前在准备阶段设置的初始值;如果执行的是static代码块,那么在初始化阶段,JVM就会执行static代码块中定义的所有操作)
static的代码(包括静态代码块)是在类加载的初始化阶段执行的。
final修饰的变量是在类加载的加载阶段执行的,比static靠前