1. 加载
加载:就是把二进制形式的.class文件读入java虚拟机中
2. 连接
1. 验证
- 类文件的结构检查
- 语义检查 (abstract 不能与 final 共存)
- 字节码验证 (.class 文件内部数据是否正确)
- 二进制兼容性的验证 (新版本jvm 与 旧版本的jvm 的兼容性)
2. 准备
- 为类变量分配内存,设置默认值。但是在到达初始化之前,类变量都没有初始化为真正的初始值
3. 解析
- 解析过程就是在类型的常量池中寻找类,接口,字段和方法的符号引用,把这些符号引用替换成直接引用的过程
3. 初始化
为类变量赋予正确的初始值
4. 类实例化
- 为新的对象分配内存
- 为实例变量赋默认值
- 为实例变量赋正确的初始值
- java编译器为它编译的每一个类都至少生成一个实例初始化方法,在java的class文件中,这个实例初始化方法被称为"" 。针对源代码中每一个类的构造方法,java编译器都产生一个方法