1 、什么是类加载
我们所开发的程序是如何被加载至jvm中运行的,将我们开发的java项目打包成jar包或者war包,实际是将.java文件编译成为.class字节码文件,然后通过类加载器加载至jvm中运行,供后续代码运行使用。
如下图:

2 、类加载的过程
我们的代码经历了 以下五个阶段
加载 —>验证 —>准备 —>解析 —>初始化
加载阶段:当我们在代码中使用到的类就会进行加载,也就是hello.class调用user.class的时候,就会将字节码文件加载至jvm内存中。

验证阶段:进行验证我们开发的代码编译后的.class文件是否合法是否符合JVM规范,验证通过后才能交给JVM来运行

准备阶段:当字节码文件验证通过后,就会进行准备工作,给这个类 (user、hello)分配一定的内存空间,然后会给类中的变量分配内存空间,在给变量赋予初始值。

解析阶段:解析是将符号引用替换为直接引用,主要针对类或接口、对象、字段、方法进行解析。

初始化阶段:也是核心阶段, 执行准备阶段的任务,会给类变量开辟内存空间和设置初始值,这段赋值代码就是在初始化阶段来执行的。在实例化对象就会触发(实例化对象时候 会触发初始化 先初始化父类)。
