一个类A
两个对象b,c
A b=new A();
A c;
下面的区别
c=b与c=new A();c=b有什么区别?
还有c=new A();c=b与c=new A();c=b.Clone()有什么区别?

解决方案 »

  1.   

    多想想内存空间 ,就很清晰了
    c=b //是c对b的引用,也就是c指向b的地址空间
    c=new A();//c直接指向重新实例化的一块内存空间
    c=b.Clone()//把b的内存空间的内容重新在另一个空间实例化出来
      

  2.   

    c=b 将b引用的对象的句柄传给c,c,b指向同一个对象(此乃浅拷贝)
    c=new A() 声明了一个新的A对象并将引用负给c
    c = b.Clone() 是将b引用的对象的一个副本的引用传给c,(此乃深拷贝)
      

  3.   

    C=B;  在内存里面指向同一个地址; 可以理解成同一道门,两把锁;
    C=b.Clone(); 在内存里面存储2个对象,两道门,只是两道门的属性相同而以。C=new A();在内存里面存储2个对象,两道门,这两道门 有相同的模板,当具体的属性可能不一样