[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;。