什么是类加载过程?它是如何工作的?代码举例讲解

类加载过程是Java虚拟机将Class文件中的二进制数据转换为Class对象的过程。它由类加载器触发并完成。

类加载过程主要包括以下几个步骤:

  1. 加载:由类加载器将.class文件加载到内存中,并为之创建一个Class对象。
  2. 链接:验证版本和格式是否正确,解析常量并设置值,将时间赋值给变量。
  3. 初始化:调用类构造器()方法,给静态变量赋初始值。
  4. 使用:可以创建类的实例对象并访问类中的字段和方法。

类的加载过程遵循”懒加载”原则,只有当一个类被首次主动使用时,该类才会被加载到内存中。比如创建类实例、访问静态字段或方法等。

来看一个简单例子:

public class LoadingProcessDemo {
    public static void main(String[] args) {
        // 自动触发该类的加载过程
        Son son = new Son();  
    }
}

class Father {
    static int A ;
    static {
        System.out.println("Father的静态代码块");
    }
}

class Son extends Father {
    static int B ;
    static {
        System.out.println("Son的静态代码块");
    }
}

该程序执行main方法时,会自动触发Son类的加载过程:

  1. 加载阶段:加载Son类的二进制数据,创建Son类的Class对象。
  2. 链接阶段:验证Son类的版本和格式,解析常量和变量。
  3. 初始化阶段:执行Son的静态代码块,输出”Son的静态代码块”。由于Son继承Father,会先初始化Father类,输出”Father的静态代码块”。
  4. 使用阶段:创建Son的实例对象son。