一、类的加载过程

装载->链接->初始化

1.装载,查找并加载类的二进制文件。

2.链接,链接分为三个步骤:验证,准备,解析,(1)验证,验证类,确保被加载的类的正确性。(2)准备,为静态变量分配内存,并为其初始化值,如:代码中定义 static int i=10; 这里会为i分配内存,并初始化,此时 i=0;(3)解析,把类中的符号引用转换为直接引用。

3.初始化,为静态变量赋真正的初始值,此时 i =10;

二、类的初始化

    1.类什么时候会被初始化,(1)new ,(2)访问类或接口的静态变量,或给静态变量赋值时,(3)调用类的静态方法,(4)反射,(5),初始化这个类的子类,(6)jvm标明启动时的类,如main方法所在的类

2.类的初始化步骤:(1)如果还没加载,链接,先加载 链接。(2)如果有父类并且父类没有加载,就先加载 链接父类(接口不适用),(3)加载类中的静态变量和静态代码块,

11-13 18:30