public class testString {
private static testString s = new testString(); private static int i; private static int j=0; public testString() {
System.out.println("i="+i+"  "+"j="+j);
i++;
j++;
System.out.println("i="+i+"  "+"j="+j);
} public static testString getInstance() {
return s;
} public static void main(String[] args) {
testString s = testString.getInstance();
System.out.println("==s===" + s.s);
System.out.println("=====i======" + i);
System.out.println("=====j======" + j);
}
}

解决方案 »

  1.   

    因为j是static变量,不属于对象,而属于整个类
      

  2.   

    private static int i; private static int j=0;也是呀,为什么是1呢
      

  3.   

    private static testString s = new testString();private static int i;private static int j=0;
    ------------------------------------------------------
    关键是这三行的顺序,这里也是顺序执行的,
    构造函数执行完后,private static int j=0,又一次把j的值置成0了private static testString s = new testString();
    这句应放在最后
      

  4.   

    这与程序的执行顺序有关。
    载入类的时候,运行时先初使化testString的s instance,在初使化s时调用了testString的构造函数,这个时候i = 1,j = 1.而后执行private static int i及private static int j=0.实际上,i和j在之前已经初使化了。在执行private static int i时没有更改i的值,而执行private static int j=0时相当于执行了一次j=0的操作。所以最终结果为i=1,j=0.
      

  5.   

    public class DateTest {
    private static String s = "1";

    public static void main(String[] args) {
    DateTest d1 = new DateTest();
    DateTest.s = "aa";
    DateTest d2 = new DateTest();
    d2.s = "bb";
    DateTest d3 = new DateTest();
    d3.s="cc"; System.out.println(d1.s);
    System.out.println(d2.s);
    System.out.println(d3.s);
    }
    }看这个例子,正如1楼说的那样,静态变量是属于类的.所有此类的对象共用