定义一个Student类:
public class Student { static{ System.out.println("执行Student的静态初始化块"); } }
测试类:
public class Test { public static void main(String[] args) throws Exception { System.out.println("-----加载类Student----"); ClassLoader loder = ClassLoader.getSystemClassLoader(); loder.loadClass("Student"); System.out.println("-----加载并初始化类Student----"); Class.forName("Student"); } }
输出结果:
-----加载类Student----
-----加载并初始化类Student----
执行Student的静态初始化块
结论:
当使用ClassLoader类的loadClass()加载某个类时,该方法只是加载该类,并不会初始化该类,而Class.forName()会执行初始化操作。