一个JAVA 静态变量的问题?

[code="java"]

public class MyStaticClass {
private static MyStaticClass obj = new MyStaticClass();

private static int a;

private static int b = 0;

private  MyStaticClass(){
    a++;
    b++;
}

public static MyStaticClass getInstance(){
    return obj;
}

/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub
    MyStaticClass m = MyStaticClass.getInstance();
    System.out.println(m.a);//1
    System.out.println(m.b);//0 为什么输出的是0????
}

}

[/code]

[code="java"]public class MyStaticClass {
private static MyStaticClass obj = new MyStaticClass();

private static int a;

private static int b = 0;

static {
    System.out.println(b);
    System.out.println("bbbbb");
}

private MyStaticClass() {
    System.out.println("aaaa");
    a++;
    b++;
}

public static MyStaticClass getInstance() {
    return obj;
}

/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub
    MyStaticClass m = MyStaticClass.getInstance();
    System.out.println(m.a);// 1
    System.out.println(m.b);// 0 为什么输出的是0????
}

}[/code]

执行顺序的问题,运行上面的程序:
aaaa
0
bbbbb
1
0
所以b++先执行,然后又执行了private static int b = 0;。