静态代码块的格式:
static{ 执行语句 }
特点:随着类的加载而加载,类一加载就执行,只执行一次。(用到类中的内容时类才会被加载,类名 变量名 = null 时,类不加载)
作用:给类进行初始化
还有一种代码块叫做构造代码块,优先于构造方法执行。也就是每执行一次构造方法,会先执行一次构造代码块。
考虑如下类:
class StaticCode{ public StaticCode(){ System.out.println("无参构造方法"); } //构造代码块 { System.out.println("构造代码块"); } //静态代码块 static{ System.out.println("静态代码块"); } public StaticCode(int x){ System.out.println("含参数构造方法"); } }
现在在主方法中创造此类的两个实例:
class StaticDemo{ public static void main(String[] args) { StaticCode cs1 = new StaticCode(); StaticCode cs2 = new StaticCode(3); }
运行结果如下:
静态代码块只执行了一次,优先于构造代码块,在类加载的时候执行;
每次执行构造方法之前都会执行构造代码块,构造代码块优先于构造方法执行。