public class Test2 extends TestStatic{
static{ System.out.println("b"); }
Test2(){ System.out.println(2); }
public static void main(String args[]){
TestStatic A=new Test2();
A=new Test2();}
}
class TestStatic {
static{System.out.println("a");}
TestStatic(){ System.out.println(1);}
}
执行结果:a b 1 2 1 2
可以看出执行顺序为:先执行父类中静态代码块,然后是子类静态块,其次父类构造函数,最后是子类构造函数。另外注意静态代码块只执行一次,所以后面语句A=new Test2();执行结果只有1 2