java里的映射和复制有什么区别

java里的映射和复制的区别就是深拷贝和浅拷贝的区别。区别是复制是拷贝了对象的引用,当原对象发生变化的时候,拷贝对象也跟着变化;映射是另外申请了一块内存,内容和原对象一样,更改原对象,拷贝对象不会发生变化。

java里的映射和复制有什么区别-Worktile社区

浅拷贝:有两种方式,一种是把一个对象里面的所有的属性值和方法都复制给另一个对象,另一种是直接把一个对象赋给另一个对象,使得两个都指向同一个对象。

深拷贝:把一个对象的属性和方法一个个找出来,在另一个对象中开辟对应的空间,一个个存储到另一个对象中。

两者就在于,浅拷贝只是简单的复制,对对象里面的对象属性和数组属性只是复制了地址,并没有创建新的相同对象或者数组。而深拷贝是完完全全的复制一份,空间大小占用一样但是位置不同!浅拷贝是拷贝了对象的引用,当原对象发生变化的时候,拷贝对象也跟着变化;深拷贝是另外申请了一块内存,内容和原对象一样,更改原对象,拷贝对象不会发生变化。

深拷贝和浅拷贝是指在赋值一个对象时,拷贝的深度不同。

在进行深拷贝时,会拷贝所有的属性,并且如果这些属性是对象,也会对这些对象进行深拷贝,直到最底层的基本数据类型为止。这意味着,对于深拷贝后的对象,即使原对象的属性值发生了变化,深拷贝后的对象的属性值也不会受到影响。

相反,浅拷贝只会拷贝对象的名列前茅层属性,如果这些属性是对象,则不会对这些对象进行拷贝,而是直接复制对象的引用。这意味着,对于浅拷贝后的对象,如果原对象的属性值发生了变化,浅拷贝后的对象的属性值也会跟着发生变化。

延伸阅读:

什么是浅拷贝?

拷贝就是拷贝指向对象的指针,意思就是说:拷贝出来的目标对象的指针和源对象的指针指向的内存空间是同一块空间,浅拷贝只是一种简单的拷贝,让几个对象公用一个内存,然而当内存销毁的时候,指向这个内存空间的所有指针需要重新定义,不然会造成野指针错误。

浅拷贝是按位拷贝对象,它会创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝。如果属性是基本类型,拷贝的就是基本类型的值;如果属性是内存地址(引用类型),拷贝的就是内存地址 ,因此如果其中一个对象改变了这个地址,就会影响到另一个对象。即默认拷贝构造函数只是对对象进行浅拷贝复制(逐个成员依次拷贝),即只复制对象空间而不复制资源。

一般情况下,只需使用系统提供的浅拷贝构造函数即可,但是,如果对象的数据成员包括指向堆空间的指针,就不能使用这种拷贝方式,因为两个对象都拥有同一个资源,对象析构时,该资源将经历两次资源返还,此时必须自定义深拷贝构造函数,为创建的对象分配堆空间,否则会出现动态分配的指针变量悬空的情况。

文章标题:java里的映射和复制有什么区别,发布者:小编,转载请注明出处:https://worktile.com/kb/p/37826

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小编小编认证作者
上一篇 2023年2月12日 下午4:36
下一篇 2023年2月12日 下午4:37

相关推荐

  • 什么是接口幂等性

    幂等性是分布式系统设计中十分重要的概念,具有这一性质的接口在设计时总是秉持这样的一种理念:调用接口发生异常并且重复尝试时,总是会造成系统所无法承受的损失,所以必须阻止这种现象的发生。 一、什么是接口幂等性 幂等性原本是数学上的概念,即使公式:f(x)=f(f(x)) 能够成立的数学性质。用在编程领域…

    2023年7月28日
    44700
  • devops什么好处

    ### 摘要 DevOps实践对企业带来数不胜数的益处,特别是在提升软件交付速度、增强团队合作与沟通、改善产品质量和客户满意度、以及降低运营成本方面。其中,提升软件交付速度是其核心优势之一。通过整合开发与运维团队的工作流程,DevOps 实践消除了部门间的障碍,确保了从代码编写到产品部署的过程更加流…

    2024年3月26日
    8300
  • devops功放机是什么牌子

    标题:DevOps功放机的独特地位与选择策略 摘要:在持续集成与持续部署的架构下,DevOps功放机展现了其不可或缺的角色。此设备的核心功能首要在于1、提升自动化部署效率;2、确保软件交付的稳定性。尤其是第一点,它通过自动化测试与持续集成流程,显著提升了开发与运维过程的协同作用,降低了人为错误的风险…

    2024年3月26日
    7600
  • 项目管理有什么项目

    项目管理包含的项目诸多,涵盖不同领域、尺度与难度各异的事项,1、商业项目、2、建筑项目、3、IT项目、4、研发项目、5、市政项目等均为常见类型。商业项目受关注程度颇高,因其通常伴随投资回报评估、市场风险分析等关键环节,具体包括产品开发、市场推广、企业合并收购等。 一、商业项目的内涵及管理重点 商业项…

    2024年1月8日
    21900
  • 照片管理的软件哪个好

    照片管理的软件好用的有:1、相册管家;2、Q相册;3、相册集;4、照片相册;5、一刻相册;6、私密相册;7、魔力相册;8、简单相册。相册管家是一款可以进行照片备份以及批量处理的整理工具,在平台上,用户能够一键备份手机上的所有照片和视频。 一、相册管家 这一款照片管理和整理的人软件当中,用户可以推手机…

    2023年4月19日
    1.7K00
  • 施工项目经理如何管理业绩

    施工项目经理管理业绩的关键在于精确的项目规划与监控、优秀的团队协作与领导力、高效的资源分配、严格的成本控制、持续的质量保证、及时的沟通和信息管理、以及灵活的风险处理能力。特别是在精确项目规划与监控方面,项目经理需要设定明确的目标与里程碑,通过持续监控项目进度并与预设的时间表、预算和品质要求相比较,及…

    2024年4月10日
    5100
  • redis和mongodb区别是什么

    redis和mongodb区别在于以下几个方面:1、内存管理机制;2、支持的数据结构;3、数据量和性能;4、性能;5、可靠性;6、数据分析;7、事务支持情况;8、集群。内存管理机制是指,Redis 数据全部存在内存,定期写入磁盘,当内存不够时,可以选择指定的 LRU 算法删除数据。 一、内存管理机制…

    2023年3月10日
    2.4K00
  • 云原生应用的可伸缩性实现方法

    在云原生应用的不同特点中,可伸缩性是其核心优势之一。1、通过横向扩展添加更多实例来增加容量;2、 利用自动化工具进行实时弹性调整;3、采用无状态架构设计;4、实施微服务架构以提高独立服务的可扩展性;5、通过容器编排工具简化伸缩过程,例如Kubernetes;6、使用消息队列和事件驱动架构来确保高并发…

    2023年12月28日
    26900
  • Devops工具链包括什么

    开门见山,DevOps工具链包含规划、开发、持续集成、部署、运维、监控等环节的一系列专业工具,用以实现软件开发的自动化与协作高效性。特别地,持续集成是DevOps理念中不容忽视的组成部分,它通过自动化构建、测试,确保代码更快速、频繁地集成到共享仓库中,这大大提高了开发质量与交付速度。 一、规划与协作…

    2024年3月26日
    10100
  • okr用什么支撑

    OKR的实现需要多方面的支撑:1、强大的执行力;2、合适的工具;3、明确的目标设定;4、高效的团队协作;5、积极的企业文化;6、科学的管理方法。无论是企业还是个人,只有拥有强大的执行力,才能够把OKR目标从理论转化为实践,从而实现预设目标。 1、强大的执行力 无论是企业还是个人,只有拥有强大的执行力…

    2023年7月11日
    29600

发表回复

登录后才能评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部