代码如下:
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才对亚.
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才对亚.
解决方案 »
- 【如何理解面向对象?】_JAVA面试/笔试题
- 请教大侠在Struts中的MVC2设计模式中的二个小问题,能不能给个标准的答案?谢谢!
- 请教诸位一个关于IO的问题
- int aa=10放在函数外面和放在函数里面有什么区别?
- 各位大哥,急!!!!帮忙,在线等待
- java 中文问题
- 在JTextArea读取文件,怎样把空格全部删掉?
- 请告知一下String s1 = "mm"; 与String s1 = new String("mm");的区别!
- 哪位大哥知道如何将rtf文件转化成html文件,请赐教,最好给个程序看看!多谢,多谢,120分奉上!!!
- 哪里有JAVA JDK这个软件下载?
- 进来看看 都有分给的
- 请高手解决
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了,以上只是示例,你理解其意义即可..
cTest.number = i;
vecotr.addElement(cTest);
} |
|
for(int i = 0; i < 10; i++) {
classTest cTest = new classTest();
cTest.number = i;
vecotr.addElement(cTest);
}
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的不同引用而已。