Vector vec1 = new Vector();
vec1.add("测试");
Vector vec2 = new Vector();
vec2 = vec1;如上,如果运行
vec2.remove(0);
为什么连vec1中的记录也被删除了?请高手讲讲原理,用vec2 = vec1;这种方法不行吗?
另外有没有其它的好方法可以解决这个问题呢?(别说将vec1中数据取出来再放到vec2中)

解决方案 »

  1.   

    vec2=vec1使得vec2也指向vec1了,所以此时vec2.remove(0)会把vec1的也删掉
      

  2.   

    Vector vec2 = new Vector();
    vec2 = vec1;
    vec2指向了vec1
    vec2.remove(0);
    实际是vec1.remove(0);
    详细查看vector的api,如何克隆一个.
      

  3.   

    vec2 和vec1,2个引用指向同一个对象,可以看成浅拷贝!任何一个改变,都会影响到另一个!
      

  4.   

    Vector的clone方法,生成新的对象在赋值到第二变量中。
      

  5.   

    他们指向了相同的内存地址操作一个会带动另一个的,我刚才做了一个示例我发现一个很有意思的东西,所以我现在推荐大家千万不能使用vector
    怎么说呢,lz因为new 了两个Vector(),那么他们分别指向了不同的内存地址,但是如果赋值的话v1=v2,那么它不仅将内容赋过去,并且连内存地址都指向相同的,所以这样做是不行的,建议不要使用Vector,或者shiyongVector但是不要给不同的Vector互相赋值;
    比如
    Stirng str1 = new String("aaa");定义了String对象,并且分配了内存空间
    String str2 = new String();或者String str2 = "";
    str2 = str1;
    str1 = new String();将内容清空,但是重新指向了地址,
    但是此时str2还是aaa;
    显然和Vector不一样,我用数组也试过,还是不一样!
      

  6.   

    String 类的对象和其他类的对象是不一样的
    String类是一个final类,它的对象已经创建便不能改变引用的内容,
    要想改变内容只有重新分配内存~!
      

  7.   

    Vector vec1 = new Vector();
    这句声明一个vec1引用指向一个Vector对象内存地址。
    vec1.add("测试");
    上面这句在这个地址上添加为vec1指向的Vector对象添加值
    Vector vec2 = new Vector();
    这句声明一个vec2引用指向另一个Vector对象内存地址。此时内存有2个Vector对象分别位于不同地址,并且有2个引用vec1,vec2分别指向这两个地址
    vec2 = vec1;
    这句是让vec2也指向vec1所指向的内存地址,原本vec2所指向的地址还放在那,这个时候vec1与vec2引用的是同一个对象,也就是说操纵的是同一个地址
    这时你用vec1和vec2操作这个地址的效果当然就是一样的。
      

  8.   

    vec2 = vec1;
    这句的意思是vec2和vec1指向了同一个引用,所以修改一个,另外一个也会被修改
    所以都被清空了
      

  9.   

    复制内容要用addAll方法,参数是collection类型
    public static void main(String[] args) {
    // TODO Auto-generated method stub

    Vector vec1 = new Vector();
    vec1.add("测试");
    Vector vec2 = new Vector();
    vec2.addAll(vec1);
    //vec2 = vec1;
    vec2.remove(0);

    System.out.println(vec1.elementAt(0));
    }
      

  10.   

    "="在这里不是赋值,而是重定向.在这里的"vec2","vec1",都叫做引用,vec2 = vec1;
    这句不过是把两个引用都指向了同一内存地址,所以vec2.remove(0);当然也会影响vec1,因为vec2影响了根本啊
    你要想达到目的不防试试clone()这个方法,Vector vec2=vec1.clone();.
      

  11.   

    Java基础中的基础啊!这种问题!!!