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

目录

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.总结

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

猜你喜欢

转载自blog.csdn.net/chenchenchencl/article/details/131599189