静态代码块的格式:
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);
}
运行结果如下:
静态代码块只执行了一次,优先于构造代码块,在类加载的时候执行;
每次执行构造方法之前都会执行构造代码块,构造代码块优先于构造方法执行。