一、语法

  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