在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()进行深拷贝。