类加载的时机
有且只有遇到 new ,getstatic , putstatic, invokestatic 这四个字节码指令时,如果类没有初始化,会触发其的初始化。这4条字节码指令的java场景时:
1 new 实例, 读取或设置一个 static 静态字段 (final 修饰的static字段除外,这个字段在编译期就放入了常量池的静态字段了。),以及调用一个类的静态方法的时候。
2 反射调用的的时候,如果没有初始化,需要先触发其初始化。
3 初始化类的时候,发现其父类没有初始化,需要** 先 **触发父类的初始化,才开始初始化子类。
4 虚拟机会最先初始化 进入的main 的主类