- 创建对象实例时(new)
public class codeblock {
public static void main(String[] args) {
//创建对象实例时(new),类被加载
AA aa = new AA(); //运行结果:AA的静态代码块被执行
}
}
class AA{
static{ //静态代码块
System.out.println("AA的静态代码块被执行");
}
}
- 创建子类对象实例时,父类也会被加载
public class codeblock {
public static void main(String[] args) {
//创建子类对象,父类也会被加载,而且先加载父类
BB bb = new BB(); //运行结果:AA的静态代码块被执行
} // BB的静态代码块被加载
}
class AA{ //父类
static{ //静态代码块
System.out.println("AA的静态代码块被执行");
}
}
class BB extends AA { //子类
static{ //静态代码块
System.out.println("BB的静态代码块被执行");
}
}
- 使用类的静态成员时(静态属性,静态方法)
public class codeblock {
public static void main(String[] args) {//这个例子是调用类的静态属性
System.out.println(CC.n);//输出结果是:CC的静态代码块被执行
} // 999
}
class CC{
public static int n=999; //静态属性
//静态代码块
static{
System.out.println("CC的静态代码块被执行");//通过有没有输出这句话来判断CC是否被加载
}
}