Java浅拷贝和深拷贝的区别
浅拷贝和深拷贝的区别 浅拷贝和深拷贝都是复制对象, 复制出来的对象,它们的内存地址都是重新分配的 ,区别在于 浅拷贝对象中的引用类型和原对象中的引用类型指向同一个内存地址 ,而 深拷贝对象中的引用类型的内存地址是重新分配的 ,也就是说, 浅拷贝对象和原对象的引用类型的数据是同步的,深拷贝对象和原对象的引用类型的数据是互不干扰的 。 注意: 这里说的是引用类型 !对于对象中直接定义的 基本数据类型及其包装类型、 String 类型 这些数据类型, 由于原对象和拷贝对象的内存地址是重新分配的,因此这些数据的改变不会影响到另一个对象 。 注意: 再强调一次,请区分对象中的 基本数据类型及其包装类型、 String 类型 ,这些不属于引用类型!特别要注意的是, 浅拷贝中,对象中的引用类型的地址是同一个内存地址 ,引用类型中的 基本数据类型及其包装类型、 String 类型 的改变会同步到所有浅拷贝对象及原对象中! 浅拷贝的实现 方法一:类要实现 Cloneable 接口,重写 Object 的 clone 方法,在 clone 方法中调用 super.clone() 方法即可。 方法二:只要能实现一个对象的所有属性都拷贝到另一个新对象的属性中即可,通常使用方法一 public class ShallowCopy implements Cloneable { public