浅复制和深复制的区别
浅复制(Shallow Clone):
被复制对象的所有变量都含有与原来对象相同的值,而所有对其他变量对象的引用仍然指向原来的对象。换言之呢,也就是浅复制仅仅复制当前的对象,并没有复制当前对象所引用的对象。
深复制(Deep Clone):
被复制对象的所有变量都含有与原来对象相同的值和原来对象所有引用的对象变量。也就是说那些引用其他对象的变量将指向被复制的新对象,而不再是原有的那些被引用的对象。换言之,深复制把被复制对象所引用的对象都复制了一遍。
比如:
class Test{
public int i;
public StringBuffer s;
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200110204611803.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NvS0tLS29uZQ==,size_16,color_FFFFFF,t_70)