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

关于克隆的一些疑问,求大大指教!
Java code
package c12;
import java.util.*; 

class Int { 
   private int i; 
   public Int(int ii) { i = ii; } 
   public void increment() { i++; } 
   public String toString() { 
       return Integer.toString(i); 
   } 
} 

public class Cloning { 
   public static void main(String[] args) { 
       Vector v = new Vector(); 
       for(int i = 0; i < 10; i++ ) 
          v.addElement(new Int(i)); 
       System.out.println("v: " + v); 
       Vector v2 = (Vector)v.clone(); 
      //Increment all v2's elements: 
      for(Enumeration e = v2.elements(); 
            e.hasMoreElements(); ) 
          ((Int)e.nextElement()).increment(); 
        //See if it changed v's elements: 
       System.out.println("v2:"+v2);
       System.out.println("v:"+v);
      if (v2!=v)
          System.out.println("This is different");
      // System.out.println("v: " + v); 
   } 
}


输出结果是这样的:
v: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
v2:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
v:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
This is different
明明是相同的,而且我看过内存的地址也是相同的,为什么判断出来就是不相同的呢?

------解决方案--------------------
探讨

那为什么V2改变了,v也会跟着改变呢?