public class b {
public static void main(String[] args)
{
C obj = C.getInstance();
System.out.println("obj.counter1==" + obj.counter1);
System.out.println("obj.counter2==" + obj.counter2);
}
}
class C
{


private static C obj = new C();//创建一个c对象
public static int counter1;
public static int counter2 = 0;



private C() 

counter1++; 
System.out.println(counter1);
counter2++; 
System.out.println(counter2);

public static C getInstance() 

return obj; 

}

解决方案 »

  1.   


    private static C obj = new C();//创建一个c对象
    public static int counter1;
    public static int counter2 = 0;执行顺序的问题,构造函数先执行,此时counter1和counter2 都为1,然后counter2=0执行,所以counter2的值被重置了。改成这样counter2的值就不会被覆盖 public static int counter1;
    public static int counter2=0;
    private static C obj = new C();// 创建一个c对象