o****h 发帖数: 58 | 1 改编了一个小版本,以便您阅读,
问题可能出在Vector class 的add()method,
当add 自己的object(这里指myDate)时,会将Vector前面的元素重写。
而add 什么String 之类则不会。
import java.io.*;
import java.util.*;
import java.lang.*;
public class newVector{
public static void main(String[] args) {
Vector A=new Vector(10,1);
char[] B={'M','T','W','R','F'};
int[] C={1,2,3,4,5};
A=initVector(B,C);
}
public static Vector initVector(char[] B, int[] C) {
myDate md=new myDate();
Vector A=new Vector(10,1);
for | p*****e 发帖数: 5165 | 2
帮说详细一点,就是原程序中md是在循环外面new的,
md里面保留的呢,就是这个new操作得到的结果,是
一个地址。
你往A里面add的呢也就是这个地址,所以你每次更新
md,java帮你把md指向的那个地址那里的数据呢就给
改了。在A里面所有加进去的object都指向md指向的地址,
所以呢它们的内容也就改了。比如你循环结束的时候看
A里面的东东都是B[4],C[4]。
所以gas哥哥就建议你每次new一个。你的原文中说
String没有这样的问题,可能你写的是A.add("haha"+i);
实际上这相当于A.add(new String("haha"+i)). |
|