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;
}
}
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;
}
}
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对象