forName()和loadClass()的区别

forName()和loadClass()的区别

类加载过程:

1.加载:通过ClassLoader加载class文件字节码,生成Class对象。

2.链接:校验:检查加载的class的正确性和安全性。

              准备:为类变量分配存储空间并设置类变量初始值。

              解析:jvm将常量池内的符号引用转换为直接引用。

3.初始化:执行类变量赋值和静态代码块。

区别:loadClass只执行到“加载”,forName会执行“加载”,“链接”,“初始化”。

 

问:forName已经完成初始化,为什么还要用loadClass呢?