java中的克隆分为:深克隆和浅克隆。之所以这样区分,是因为java中分为基本数据类型和引用数据类型。
基本数据类型存储在栈中,引用数据类型存储在堆中。
其实深浅克隆的区别就在于一个对象中的属性是不是完全被复制到另一个对象中去。
总结如下:
1.浅克隆:只复制基本类型的数据,引用类型的数据只复制了引用的地址,引用的对象并没有复制,在新的对象中修改引用类型的数据会影响原对象中的引用。
2.深克隆:是在引用类型的类中也实现了clone,是clone的嵌套,复制后的对象与原对象之间完全不会影响。
3.使用序列化也能完成深复制的功能:对象序列化后写入流中,此时也就不存在引用什么的概念了,再从流中读取,生成新的对象,新对象和原对象之间也是完全互不影响的。
4.使用clone实现的深克隆其实是浅克隆中嵌套了浅克隆,与toString方法类似
Java中克隆
最新推荐文章于 2023-10-11 16:49:42 发布