静态代码块:
格式:
static{
语句块
}
例:
class T {
static {//定义静态代码块
System.out.println("0,静态代码块");
}
public T() {//定义构造方法
System.out.println("1,构造方法");
}
}
public class Test{
static {
System.out.println("在主方法类中定义代码块");
}
public static void main(String[] args) {
new T();
new T();
new T();
}
}
输出结果:
在主方法类中定义代码块
0,静态代码块
1,构造方法
1,构造方法
1,构造方法
由此可见:静态代码块优先于主方法执行,而在类中定义的静态代码块会优先于执行于构造方法,而且不管有多少个对象产生,静态代码块只执行一次。
静态代码块在类被加载的时候就会被调用;
(1)静态代码块比构造方法先执行:父类静态代码块、子类的静态代码块、父类构造方法、子类构造方法;
(2)静态代码块执行时会调用另一个静态代码块;
(3)调用子类的方法时,父类的静态代码块也会被调用;
(4)用子类调用父类方法,子类静态代码块不会被调用;