new一个对象
package com.atChina.jvm;
public class Test4 {
public static void main(String[] args) {
// 所有的java虚拟机实现必须在每个类或接口被java程序"首次主动使用"时才初始化他们。(初始化只会被执行一次)
Father4 f = new Father4(); // new一个对象,属于主动使用,会初始化,因此会执行类的静态代码块
System.out.println("已经初始化......");
Father4 ff = new Father4(); // 不是首次使用,因此不会再次初始化了,不会再次执行类的静态代码块了
}
}
class Father4{
static{
System.out.println("桃园结义");
}
}
反射
package com.atChina.jvm;
class CL{
static {
System.out.println("Class CL");
}
}
public class Test12 {
public static void main(String[] args) throws Exception {
ClassLoader loader = ClassLoader.getSystemClassLoader();
Class<?> clazz = loader.loadClass("com.atChina.jvm.CL"); // 没有导致CL类的初始化
System.out.println(clazz);
System.out.println("==============================");
clazz = Class.forName("com.atChina.jvm.CL"); // 反射属于主动使用,会导致CL类的初始化
System.out.println(clazz);
}
}