所有TestClass的a变量在内存中是一个东西。所以最后输出的两个值肯定是一样的。你对Static的理解确实有偏差。类的static变量在一次执行过程中只有唯一且不变的内存地址。

解决方案 »

  1.   

    input()中虽然teststatic.TestV.addElement(testclass)了两次,加入了两个不同的TestClass对象,但是在第二个TestClass对象生成的时候,对public static int a的值已经有了修改,而public static int a是两个TestClass对象所共有的,那么在output()中,你当然会得到两个1
      

  2.   

    续:不管是把input和output分开还是合在一起,对程序的结果都不会有什么影响  强调public static int a是两个TestClass对象所共有的,通过其中一个对象对其修改,会影响到其他的同类对象
      

  3.   

    例1:teststatic.TestV.addElement(testclass);//testclass.a=1覆盖了testclass.a=0;testclass.a=0已经不存在.
      

  4.   

    再续:把static去掉就可以得到你要的结果 建议你好好看看面向对象的书java c++都无所谓 这些东西都是相通的
      

  5.   

    看来你对static这个类型还不是很清楚!真的看看书有不懂的再问!这些都是基本功啊 !
      

  6.   

    to Sunni :
     确实是这样的。我今天早上将static去掉后,得到了我要的结果~~,可是还有一个另外的问题,明天再问吧~