java.java --->jdk编译(javac -c) --->java.class --->类加载器 --->运行
一个类的生命周期
类加载 ---》验证 ---》准备 ---》 解析 ---》初始化 --》使用---卸载
验证:检查字节流的信息是否符合jvm规范
准备:为变量分配内存设置类变量的初始化 如:private static int size =12; size 默认初始化为size=0,在初始化阶段才会是12
解析:常量池引用替换成直接引用
初始化:构造函数,静态块的初始化赋值
bootstrap classLoader---》extension classLoader---》application classLoader --》user classLoader
bootstrap classLoader 装载核心类库 C语言
extension classLoader jdk中 home/lib/ext目录下的jar
application classLoader classpath
双亲委派模式(安全性) 防止写的类会对核心类库产生影响 ,例如 :system.out.pritln("string")main不能加载bootstrap中的类
一个类加载顺序user classLoader --》application --》extension --》bootstrap
bootstrap classLoader---》extension classLoader---》application classLoader --》user classLoader
user classLoader
优先执行父类的执行静态变量然后是普通成员变量