实例实例Java 浅拷贝:浅拷贝是指在拷贝的过程中只复制对象本身,而不复制它包含的引用类型的成员变量。Java 深拷贝:深拷贝是指在拷贝的过程中,不仅复制对象本身,也复制它包含的引用类型的成员变量。
实例
Java 浅拷贝:浅拷贝是指在拷贝的过程中只复制对象本身,而不复制它包含的引用类型的成员变量。
Java 深拷贝:深拷贝是指在拷贝的过程中,不仅复制对象本身,也复制它包含的引用类型的成员变量。
两者的区别:
1. 浅拷贝只复制对象本身,而不复制它包含的引用类型的成员变量;而深拷贝不仅复制对象本身,也复制它包含的引用类型的成员变量。
2. 浅拷贝只复制了对象本身,而深拷贝复制了对象本身和它包含的引用类型的成员变量,所以深拷贝会更加耗时。
代码实例:
//浅拷贝
public class ShallowCopy {
public static void main(String[] args) throws CloneNotSupportedException {
Person person = new Person("John", 20);
Person clonePerson = (Person) person.clone();
System.out.println(person == clonePerson); //false
System.out.println(person.getName() == clonePerson.getName()); //true
}
}
class Person implements Cloneable {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
//深拷贝
public class DeepCopy {
public static void main(String[] args) throws CloneNotSupportedException {
Address address = new Address("China", "Beijing");
Person person = new Person("John", 20, address);
Person clonePerson = (Person) person.clone();
System.out.println(person == clonePerson); //false
System.out.println(person.getName() == clonePerson.getName()); //true
System.out.println(person.getAddress() == clonePerson.getAddress()); //false
}
}
class Person implements Cloneable {
private String name;
private int age;
private Address address;
public Person(String name, int age, Address address) {
this.name = name;
this.age = age;
this.address = address;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void set
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(16条)