在java中,我們經常會將一個對象賦值給另一個對象,比如
Student s1 = new Studnet(12,"李四");
Student s2 = s1;
s2.setID(36);
System.out.println(s1+"___"+s2);
當你對對象進行操作,不管是賦值之前還是之后,兩個值都會修改,這是因為它們是指向同一個對象,指針不一樣。
所以這就涉及深拷貝與淺拷貝,深拷貝就是復制一個對象到一個全新的對象,和之前的對象沒有關聯;
淺拷貝就是前面提到的直接賦值給另一個對象。
如果想實現深拷貝,就需要自己去實現,比如:
public class Student(){
String name;
int id;
public Student deepClone(){
Student s = new Student();
s.id = this.id;
...
return s;
}
}
通過deepClone()進行深拷貝。
---------------------
作者:lc14750429
來源:CSDN
原文:https://blog.csdn.net/lc14750429/article/details/88039556
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!