java对象赋值给另一个对象会怎么样(将一个对象赋值给另一个对象)

Java对象之间的赋值

在Java程序中,常常需要将一个对象的值赋值给另一个对象,Java中对象赋值的方式有两种:浅复制和深复制。

浅复制

所谓浅复制,就是将一个对象的引用赋值给另一个对象。这种方式只是复制了对象的引用而已,并没有创建一个新的对象。因此,当其中一个对象发生改变时,另一个对象也会跟随改变。例如:

Person person1 = new Person("张三", 20);
Person person2 = person1; //浅复制,将person1的引用赋值给person2
person1.setName("李四");
System.out.println(person2.getName()); //输出“李四”

因为person2和person1指向的是同一个对象,所以当person1的name属性改变时,person2的name属性也会改变。

深复制

深复制是指将一个对象复制到另一个对象,创建一个全新的对象。这个全新的对象和原始对象的值是相同的,但是它们指向的不是同一个地址。深复制是在堆(heap)中开辟了一块新的空间,这个空间里面存储的就是原始对象中的数据,但是两个对象相对独立,互不影响。例如:

public class Person implements Cloneable{
    private String name;
    private int age;

    public Person(String n, int a) {
        this.name = n;
        this.age = a;
    }

    public String getName() {
        return name;
    }

    public void setName(String n) {
        this.name = n;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int a) {
        this.age = a;
    }

    public Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}

public class Main {

    public static void main(String[] args) throws CloneNotSupportedException {
        Person person1 = new Person("张三", 20);
        Person person2 = (Person) person1.clone(); //深复制
        person1.setName("李四");
        System.out.println(person2.getName()); //输出“张三”
    }
}

在深复制的方式中,我们重写了对象的clone方法,通过调用clone(),我们创建了一个全新的对象,这个对象不会受另一个对象的影响。

java对象赋值给另一个对象会怎么样(将一个对象赋值给另一个对象)

总结

通过上述例子,我们可以看出,在Java中,对象之间的赋值有两种方式:浅复制和深复制。浅复制是将对象的引用赋值给另一个对象,两个对象指向的是同一个地址;深复制是在堆中创建一个全新的对象,两个对象互不影响。开发中需要根据实际情况,选择合适的方式进行对象赋值,以保证程序的正确性。

本文来自投稿,不代表亲测学习网立场,如若转载,请注明出处:https://www.qince.net/javavljava.html

郑重声明:

本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。

我们不承担任何技术及版权问题,且不对任何资源负法律责任。

如遇到资源无法下载,请点击这里失效报错。失效报错提交后记得查看你的留言信息,24小时之内反馈信息。

如有侵犯您的版权,请给我们私信,我们会尽快处理,并诚恳的向你道歉!

(0)
上一篇 2023年4月24日 下午9:32
下一篇 2023年4月24日 下午9:32

猜你喜欢