package com.zpc.jvm;class Test3 {
static {
System.out.println("Test3的静态初始化块!");
}
}public class ClassLoaderTest {
public static void main(String[] args) throws ClassNotFoundException {
ClassLoader c1 = ClassLoader.getSystemClassLoader();
c1.loadClass("Test3");
System.out.println("系统加载Test3类。");
Class.forName("Test3"); }}
static {
System.out.println("Test3的静态初始化块!");
}
}public class ClassLoaderTest {
public static void main(String[] args) throws ClassNotFoundException {
ClassLoader c1 = ClassLoader.getSystemClassLoader();
c1.loadClass("Test3");
System.out.println("系统加载Test3类。");
Class.forName("Test3"); }}
c1.loadClass("com.zpc.jvm.Test3");
System.out.println("系统加载Test3类。");
Class.forName("com.zpc.jvm.Test3");
ClassLoader 的loadClass并不是对类的主动使用,因此不会导致类的初始化
Class的forName是对类的主动使用,会导致类的初始化,因此静态变量被赋给初始值和静态块会被执行