类的加载过程主要包括以下五个阶段:
加载(Loading):这是类加载的第一个阶段,负责查找并加载类的字节码文件。在这个阶段,类加载器根据类的全限定名,搜索并定位字节码文件。如果找不到,就会抛出ClassNotFoundException。
验证(Verification):在这个阶段,Java虚拟机将会检查类文件的格式、语义等内容,确保其符合Java规范,否则将抛出ClassFormatError等异常。
准备(Preparation):在这个阶段,Java虚拟机将为类变量分配内存,并设置类变量的初始值。注意,这里只包括类变量,不包括实例变量,实例变量将会在对象实例化时初始化。
解析(Resolution):在这个阶段,Java虚拟机将把常量池内的符号引用转换为直接引用的过程。解析动作主要针对类或接口、字段、类方法、接口方法、构造器等方法。
初始化(Initialization):这是类加载过程的最后一个阶段,也就是执行类构造器()方法的过程。在此阶段,JVM会执行类中编写的Java程序代码,对类的静态变量,静态代码块执行初始化操作。
总的来说,类的加载过程包括加载、验证、准备、解析和初始化五个阶段,这些阶段都是有序的,而且前一个阶段必须完成之后,才能进行下一个阶段。