java对象赋值(深拷贝与浅拷贝)

在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
版权声明:本文为博主原创文章,转载请附上博文链接!

posted @ 2019-07-22 11:18  天涯海角路  阅读(2010)  评论(0编辑  收藏  举报