Redian新闻
>
折腾了一天,实在是绝望了,请教请教
avatar
折腾了一天,实在是绝望了,请教请教# Java - 爪哇娇娃
o*h
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
avatar
p*e
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)).
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。