简述Java 浅拷贝和深拷贝 ?
参考答案:
Java中的浅拷贝和深拷贝是对象复制过程中的两种不同方式,主要区别在于如何处理对象中的引用类型字段。
-
浅拷贝(Shallow Copy): 浅拷贝是将对象中的所有字段复制到新的对象中。对于值类型字段(如int、long等基本数据类型),其值会被直接复制到新对象中。然而,对于引用类型字段,复制的是引用本身,而不是引用的对象。这意味着新对象和原始对象共享对这些引用对象的引用,因此在一个对象中修改这些引用对象会影响到另一个对象。
-
深拷贝(Deep Copy): 深拷贝也是将对象中的所有字段复制到新的对象中。但是,无论是值类型字段还是引用类型字段,都会被重新创建并赋值。对于引用类型字段,深拷贝会递归地复制对象内部的引用对象,直到达到基本类型为止。这样,新对象和原始对象是完全独立的,对一个对象的修改不会影响到另一个对象。
总的来说,浅拷贝只复制对象本身和对象内部的值类型字段,而引用类型字段则共享引用;而深拷贝则完全复制对象及其内部的所有引用对象,新对象和原始对象是完全独立的。