静态代码块是在类加载是自动执行的一段代码,其形式为:
static{
//函数体
}
静态代码块执行顺序优先于类的其它成员,类被加载时会首先执行静态代码块,如果子类父类均有静态代码块,创建子类时,会先执行父类静态代码块,接着执行子类静态代码块,然后才是父类构造函数、子类构造函数。例如:
class A{
static int a=12;
static{
System.out.println("Static block of A");
}
public A(){
System.out.println("a="+this.a);
}
}
class B extends A{
static int b=9;
static{
System.out.println("Static block of B");
}
public B(){
System.out.println("b="+this.b);
}
}
public class Test {
public static void main(String[] args) {
B b1=new B();
}
}
Static 块仅在该类被加载时执行一次,且static块中不能对非static成员进行操作。如:
A a1=new A();
A a2=new A();