日期:2014-05-20  浏览次数:20710 次

这段代码的输出结果是什么?为什么会这样?
如题

import java.util.Vector;

public class test {

public static void main(String...args){
Vector v1=new Vector();
Vector v2=new Vector();
v1.add("1");
v2.add(v1);

Vector v3 = (Vector)v2.get(0);
v3.add("2");

System.out.println("v3:"+v3);
System.out.println("v2:"+v2);
}

}


Java

------解决方案--------------------
Vector是同步的  我就知道这些 和List不一样
------解决方案--------------------
Vector v1=new Vector();         
Vector v2=new Vector();            
 v1.add("1");        
 v2.add(v1);                
   Vector v3 = (Vector)v2.get(0);  //(Vector)v2.get(0)==v1 ,所以v3=v1 
   v3.add("2");                  //v3.add("2") ,v1也add("2")了,所以v2也变了
 System.out.println("v3:"+v3);         
System.out.println("v2:"+v2); 


这样对不对
------解决方案--------------------
引用:
引用:Java code
?



12345678

Vector v1=new Vector();          Vector v2=new Vector();              v1.add("1");          v2.add(v1);                    Vector v3 = (……

在这里 v1和v3是同一个对象 改变v1相当于改变v3  因为v2里有v1  所以 改变v1和v3时v2也会变   但是改变v2不会影响v1和v3
------解决方案--------------------
引用:
引用:引用:Java code
?



12345678

Vector v1=new Vector();          Vector v2=new Vector();              v1.add("1");          v2.add(v1);             ……


最后一句不对,改变v2里面的v1会同时影响到v1,v2,v3
((Vector)v2.get(0)).add("3");