本帖最后由 mingyunzhidian 于 2012-07-17 09:10:37 编辑

解决方案 »

  1.   


    你这里的克隆是浅克隆  只复制当前对象 它里面的对象的成员变量将不复制出单独的一份 而是指向你原来的对象的成员变量的对象 我说的你明白吗?然而你执行了s的increment  他把s的next 和next的next都+1了 所以s2的next与next的next都+1了也就是bcde 变成了cdef  然后s2没执行increment所以他的a还是a  你打印s2  就变成了打印a与s的next 还有s的next的next  变成了acdef  而s的变化你应该知道是为什么  所以不多说了 叙述的有些混乱 凑合看吧  说的不对的 见谅
      

  2.   

    class Int  {
     int j; // Automatically duplicated
    public Int(int i) {
    j=i;
    }
    public String toString() {
    return Integer.toString(j);
    }
    public static void main(String[] args) {
    Int2 x = new Int2(10);
    x.k=new Int(10);
    Int2 x2 = (Int2) x.clone();
    x2.increment();
    x2.k=new Int(99);
    System.out.println("x.k = " + x.k + ", x2.k = " + x2.k);
    }
    }
    为什么这个里x.k与x2.k的值不一样,不是一个对象吗?