一、语法
static
{
静态代码块中的执行语句
}
二、特点
随着类的加载而执行,而且只执行一次,并优先于主函数而执行
三、作用
用于给类初始化的
(区分构造代码块:给对象初始化的)
(普通构造函数:是给对应对象初始化的)
四、例子
public class Demo {
static {
System.out.println("b");
}
public static void main(String[] args) {
new DemoTest();
new DemoTest();//注意静态初始化类只会在类加载时,执行一遍
System.out.println("over");
//DemoTest s=null;虽然创建了类变量,但是没有指向,所有相当于没用到这个类,所以DemoTest类不会被加载
//Demo这个类方法执行,所以会加载Demo这个类 若main中只有这句:执行结果为 b c
//DemoTest s=new DemoTest();//会调用默认的构造方法,用到DemoTest类,所以会加载
}
static {
System.out.println("c");
}
}
public class DemoTest {
static {
System.out.println("a");
}
}
运行结果:b c a over
六、静态初始化块、构造代码块、构造函数输出顺序练习
public class Demo {
Demo(){
System.out.println("b");
}
static {
System.out.println("a");
}
{
System.out.println("c");
}
Demo(int x){
System.out.println("d");
}
}
别的类中调用:new Demo(4); 输出:a c d