1. 深拷贝和浅拷贝
1.1 区别
**例子:**你需要将一个对象拷贝到一个新的对象里(类型相同),你选择浅拷贝,那么它就是将对原先的对象原封不动的拷贝过去(引用类型共享内存地址),而深拷贝就是基本类型复制,引用类型是先创建一个新的对象再将值复制过来。
**区别:**引用类型拷贝区别:浅拷贝将地址拷过来(地址复用),深拷贝将值拷过来(创建一个新的对象,地址不复用)。
浅拷贝
定义
- 基本类型字段:直接复制值。
- 引用类型字段:仅复制内存地址(新旧对象共享同一引用对象)。
- 特点:修改原对象或拷贝对象中的引用字段时,另一方会同步变化。
深拷贝
定义
- 基本类型字段:直接复制值。
- 引用类型字段:递归创建新对象并复制所有层级数据(新旧对象引用独立对象)。
- 特点:修改原对象或拷贝对象中的引用字段时,另一方不受影响。

1.2 实现深拷贝的方式
- 实现 Cloneable 接口并重写 clone() 方法
class Person implements Cloneable {
String name;
Address address;
@Override
public Person clone() {
try {
Person cloned = (Person) super.clone();
// 深拷贝:递归克隆引用字段
cloned.address = this.address.clone();
return cloned;
} catch (CloneNotSupportedException e) {
throw new AssertionError(); // 不会发生
}
}
}
class Address {
String city;
Address {
{
(Address) .clone();
} (CloneNotSupportedException e) {
();
}
}
}



