深拷贝与浅拷贝

一、深浅拷贝概念

在java里,当我们需要拷贝一个对象时,有两种类型的拷贝:浅拷贝与深拷贝。

1、浅拷贝,将对象中的所有字段复制到新的对象(副本)中

  •         值类型字段的值被复制到副本中后,在副本中的修改不会影响到源对象对应的值。
  •         引用类型字段的值被复制到副本中的还是引用类型的引用,而不是引用的对象,在副本中对引用类型的字段值做修改会影响到源对象本身

        简而言之,浅拷贝里面存在引用对象,只会指向引用对象的地址,而不是直接复制整个引用对象。

 2、深拷贝,将对象中的所有字段复制到新的对象(副本)中

        不过,无论是对象的值类型字段,还是引用类型字段,都会被重新创建并赋值,对于副本的修改,不会影响到源对象本身。

        深拷贝简单归纳就是对象内部引用的对象均复制。

二、浅拷贝举例

1、使用clone进行浅拷贝

import lombok.Data;

@Data
public class User implements Cloneable{

    private String name;

    private int age;

    //引用类型
    private Love love;

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

@Data
class Love implements Cloneable{
    private String name;
    private int num;
}

class test{
    public static void main(String[] args) throws CloneNotSupportedException {
        Love love = new Love();
        love.setName("羽毛球");

        User user = new

相关推荐

  1. 拷贝拷贝

    2024-06-06 18:56:03       20 阅读
  2. 拷贝拷贝

    2024-06-06 18:56:03       16 阅读
  3. 拷贝拷贝

    2024-06-06 18:56:03       8 阅读
  4. js的拷贝拷贝

    2024-06-06 18:56:03       26 阅读
  5. python 之 拷贝拷贝

    2024-06-06 18:56:03       10 阅读
  6. 【C++】拷贝拷贝

    2024-06-06 18:56:03       8 阅读
  7. 拷贝拷贝

    2024-06-06 18:56:03       10 阅读
  8. c++拷贝拷贝

    2024-06-06 18:56:03       9 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-06 18:56:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-06 18:56:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-06 18:56:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-06 18:56:03       20 阅读

热门阅读

  1. 如何把图片保存成16位png格式?

    2024-06-06 18:56:03       9 阅读
  2. WPS/Office(Word、Excel、PPT) 自动测评方法

    2024-06-06 18:56:03       9 阅读
  3. Yolov10训练自己的数据集

    2024-06-06 18:56:03       9 阅读
  4. HBase

    HBase

    2024-06-06 18:56:03      11 阅读
  5. js前端格式化日期函数

    2024-06-06 18:56:03       9 阅读
  6. 【== 和 equals 的区别是什么?】

    2024-06-06 18:56:03       10 阅读
  7. spark3.0.1版本查询Hbase数据库例子

    2024-06-06 18:56:03       9 阅读
  8. Visual Studio的使用教程

    2024-06-06 18:56:03       8 阅读
  9. rabbitmq的交换机类型以及他们的区别

    2024-06-06 18:56:03       9 阅读
  10. 【无标题】2024.6.6

    2024-06-06 18:56:03       9 阅读
  11. linux c 求取MD5 转char 输出

    2024-06-06 18:56:03       10 阅读