日期:2014-05-19  浏览次数:20741 次

求解—一单例模式运行顺序
public class Singleton {
(1)private static Singleton obj = new Singleton();
(2)public static int counter1;
(3)public static int counter2 = 1;
(4)private Singleton(){
counter1++;
counter2++;
}
(5)public static Singleton getInstance(){
return obj;
}
}

public class MyMain {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Singleton obj = Singleton.getInstance();
System.out.println("obj.counter1=="+obj.counter1);
System.out.println("obj.counter2=="+obj.counter2);

}

}

请说出(1)(2)(3)(4)(5)的运行顺序和运行结果,并说出原因

------解决方案--------------------
(1)private static Singleton obj = new Singleton();
(2)public static int counter1; 初始默认为0
(3)public static int counter2 = 1;

(1)(2)(3)程序初始的时候就对应赋值 
(3)实例化了。。调用(4)private无参构造函数
所以counter1 = 1; counter2 = 2
(5)只是返回一个Singleton地址