【面试题精讲】深拷贝和浅拷贝区别了解吗?什么是引用拷贝?

有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top

首发博客地址

面试题手册

系列文章地址


深拷贝和浅拷贝的区别:

深拷贝(Deep Copy)和浅拷贝(Shallow Copy)是在进行对象拷贝时常用的两种方式,它们之间的主要区别在于是否复制了对象内部的数据。

  • 浅拷贝只是简单地将原对象的引用赋值给新对象,新旧对象共享同一块内存空间。当其中一个对象修改了这块内存中的数据时,另一个对象也会受到影响。
  • 深拷贝则是创建一个全新的对象,并且递归地复制原对象及其所有子对象的内容。新对象与原对象完全独立,对任何一方的修改都不会影响另一方。

引用拷贝:

引用拷贝是指将一个对象的引用直接赋值给另一个变量,使得两个变量指向同一个对象。这样,在修改其中一个变量所指向的对象时,另一个变量也会随之改变。

引用拷贝通常发生在传递参数、返回值等场景中。例如,在 Java 中,如果将一个对象作为参数传递给方法,实际上是将该对象的引用传递给了方法,而不是对象本身的拷贝。

需要注意的是,引用拷贝并非真正意义上的拷贝,而是共享同一份数据。因此,对于引用拷贝的对象,在修改其内部数据时需要注意是否会影响到其他使用该对象的地方。

总结起来:

  • 浅拷贝只复制了对象本身,不会复制对象内部的数据。
  • 深拷贝递归地复制了对象及其所有子对象的内容。
  • 引用拷贝是将一个对象的引用赋值给另一个变量,使得两个变量指向同一个对象。

本文由mdnice多平台发布

相关推荐
IT_陈寒11 小时前
Redis性能翻倍的5个冷门技巧:从缓存穿透到集群优化实战指南
前端·人工智能·后端
聆风吟º11 小时前
【Spring Boot 报错已解决】Spring Boot接口报错 “No converter found” 解决手册
java·spring boot·后端
美味小鱼12 小时前
DupFinder:一个用 Rust 编写的高性能重复文件查找工具
开发语言·后端·rust
Victor35612 小时前
Redis(160)Redis的安全问题如何解决?
后端
Victor35612 小时前
Redis(161)如何使用Redis实现分布式锁?
后端
芷栀夏12 小时前
多设备文件接力太麻烦?Go File + cpolar让传输效率翻倍
开发语言·后端·golang
追逐时光者12 小时前
C#/.NET/.NET Core技术前沿周刊 | 第 63 期(2025年11.24-11.30)
后端·.net
h***047716 小时前
SpringBoot(7)-Swagger
java·spring boot·后端
v***913017 小时前
Spring boot创建时常用的依赖
java·spring boot·后端
Cosolar20 小时前
银河麒麟 / aarch64 系统:Docker + Docker Compose 完整安装教程
后端·程序员·架构