代码如下:
import java.util.Vector;public class test {
  private Vector vecotr = new Vector();  public void  vTest() {
    for(int i = 0; i < 10; i++) {
      vecotr.addElement("" + i);
    }
    for(int i = 0; i < 10; i++) {
      String tmp = (String) vecotr.elementAt(i);
      System.out.println("tmp = " + tmp);
    }
    vecotr.removeAllElements();
    classTest cTest = new classTest();    for(int i = 0; i < 10; i++) {
      cTest.number = i;
      vecotr.addElement(cTest);
    }
    for(int i = 0; i < 10; i++) {
      classTest tmp = (classTest) vecotr.elementAt(i);
      System.out.println("tmp.number = " + tmp.number);
    }
  }  public static void main(String[] args) {
    test dd = new test();
    dd.vTest();
  }
}class classTest {
  public int number = 0;
}显示:
tmp = 0
tmp = 1
tmp = 2
tmp = 3
tmp = 4
tmp = 5
tmp = 6
tmp = 7
tmp = 8
tmp = 9
tmp.number = 9
tmp.number = 9
tmp.number = 9
tmp.number = 9
tmp.number = 9
tmp.number = 9
tmp.number = 9
tmp.number = 9
tmp.number = 9
tmp.number = 9第二个为什么都是9呀?应该是1-9才对亚.

解决方案 »

  1.   

    需要扎实一下基础
    for(int i = 0; i < 10; i++) {
          cTest.number = i;
          vecotr.addElement(cTest);
        }
    这里的循环插入的是同一个对象 cTest !!!
    也就是vector中十个完全一样的对象,当然其内容都一样了
    应该这样for(int i = 0; i < 10; i++) {
          cTest = new classTest(); //这样才新生成一个test类 !!
          cTest.number = i;
          vecotr.addElement(cTest);
        }//好久没用java了,以上只是示例,你理解其意义即可..
      

  2.   

    classTest cTest = new classTest();    for(int i = 0; i < 10; i++) {
          cTest.number = i;
          vecotr.addElement(cTest);
        }              |
                  |
            for(int i = 0; i < 10; i++) {
          classTest cTest = new classTest();
          cTest.number = i;
          vecotr.addElement(cTest);
        }
      

  3.   

    问题出在以下代码这里:
    classTest cTest = new classTest();    for(int i = 0; i < 10; i++) {
          cTest.number = i;
          vecotr.addElement(cTest);
        }
    Vector.addElement()方法是将某一个Object的引用加入到Vector中,所以从你的代码来看,你最初创建了一个classTest的对象,并建立了一个cTest的引用,然后将该对象的number设置为i,并将此引用加入到Vector中,在第二次循环的时候,你并为创建新的Object,而只是将之前的Object的number重新赋值,并再一次放入了Vector中,所以这样看来,当你输出的时候,所看到的值都是9,因为在Vector中实际上放入了多个同一个Object的不同引用而已。