色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java深拷貝和淺拷貝和深拷貝

李佳璐1年前6瀏覽0評論

在Java中,對象的屬性可以通過拷貝賦值的方式傳遞到其他對象中,Java中的拷貝分為深拷貝和淺拷貝兩種方式。

淺拷貝指的是拷貝一個對象時,僅僅是拷貝了對象的引用地址,而并沒有拷貝對象的內容,另外一個對象與原始對象共享同一個地址。相反,深拷貝則是將原始對象的內容全部拷貝到新的對象中,兩個對象擁有不同的地址。

// 淺拷貝
class Student implements Cloneable {
private String name;
private int age;
private Address address;
public Student(String name, int age, Address address) {
this.name = name;
this.age = age;
this.address = address;
}
@Override
public Object clone() throws CloneNotSupportedException {
// 直接調用super.clone()的方法,就完成了淺拷貝
return super.clone();
}
}

深拷貝需要對對象的所有屬性(如果有對象屬性,還需要對該對象屬性進行遞歸深拷貝)重新進行拷貝,以達到新對象與原始對象完全相同,但是地址不同的效果。

// 深拷貝
class Student implements Cloneable {
private String name;
private int age;
private Address address;
public Student(String name, int age, Address address) {
this.name = name;
this.age = age;
this.address = address;
}
@Override
public Object clone() throws CloneNotSupportedException {
// 實現深拷貝
Student student = (Student) super.clone();
student.address = (Address) address.clone();
return student;
}
}

總之,淺拷貝和深拷貝都有其各自的優缺點,需要根據具體情況選擇不同的拷貝方式。