浅拷贝、深拷贝、引用拷贝

文章介绍了编程中对象复制的三种方式:浅拷贝创建新对象但引用相同内存地址,导致修改影响原对象;深拷贝则递归复制对象及嵌套对象,保持独立;引用拷贝仅指向原始对象地址,修改会同时影响原对象。示例代码展示了三种拷贝的不同效果。
摘要由CSDN通过智能技术生成

目录

1.浅拷贝

2.深拷贝

3.引用拷贝

4.代码示例

5.总结


浅拷贝、深拷贝和引用拷贝是在编程中用来  复制对象或数据   的三种不同方式。

1.浅拷贝

浅拷贝(Shallow Copy):浅拷贝创建一个新对象,其中包含原始对象的引用。这意味着新对象和原始对象将引用相同的内存地址,对其中一个对象的修改将影响到另一个对象。简而言之,浅拷贝只复制对象的引用,并没有复制对象本身。

2.深拷贝

深拷贝(Deep Copy):深拷贝创建一个新对象,并递归地复制原始对象及其所有嵌套对象。这意味着新对象和原始对象是完全独立的,修改一个对象不会影响到另一个对象。简而言之,深拷贝复制了整个对象及其引用对象。

3.引用拷贝

引用拷贝(Reference Copy):引用拷贝只是简单地将新变量指向原始对象的内存地址,而不创建新的对象。这意味着新旧变量都引用同一个对象,对其中一个变量的修改也会影响到另一个变量。

4.代码示例

// 假设有一个Person类
class Person {
    public String name;
    
    public Person(String name) {
        this.name = name;
    }
}

// 创建一个原始对象
Person original = new Person("Alice");

// 浅拷贝示例
Person shallowCopy = original;
shallowCopy.name = "Bob";
System.out.println(original.name);  // 输出 "Bob",原始对象被修改

// 深拷贝示例
Person deepCopy = new Person(original.name);
deepCopy.name = "Charlie";
System.out.println(original.name);  // 输出 "Bob",原始对象未被修改

// 引用拷贝示例
Person referenceCopy = original;
referenceCopy.name = "Dave";
System.out.println(original.name);  // 输出 "Dave",原始对象被修改

5.总结

对于浅拷贝和引用拷贝来说,修改拷贝后的对象会影响到原始对象,而深拷贝则不会。因此,深拷贝是最为彻底的拷贝方式,可以创建独立的对象副本,而浅拷贝和引用拷贝只是创建了指向相同对象的新引用。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YoLo♪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值