Java深拷贝和浅拷贝
时间: 2023-07-08 07:05:18 浏览: 92
Java中的对象拷贝分为深拷贝和浅拷贝两种方式。
浅拷贝是指将一个对象复制到另一个对象,两个对象共享同一个内存地址,即修改其中一个对象会影响另一个对象。在Java中,浅拷贝可以通过Object类中的clone()方法实现。
深拷贝是指将一个对象复制到另一个对象,两个对象内存地址不同,即修改其中一个对象不会影响另一个对象。在Java中,深拷贝可以通过序列化和反序列化实现,也可以通过手动复制每个对象的属性实现。
示例代码:
```java
// 浅拷贝
class Person implements Cloneable {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
Person person1 = new Person("张三", 20);
Person person2 = (Person) person1.clone();
person1.setName("李四");
System.out.println(person2.getName()); // 输出“李四”
// 深拷贝
class Person implements Serializable {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public Person(Person person) {
this.name = person.getName();
this.age = person.getAge();
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
Person person1 = new Person("张三", 20);
Person person2 = new Person(person1);
person1.setName("李四");
System.out.println(person2.getName()); // 输出“张三”
```
阅读全文