深拷贝和浅拷贝

ops/2025/3/3 5:31:49/

一、定义

定义浅拷贝创建一个新对象,但不复制对象内部的引用指向的对象。复制的是对原始对象内存地址的引用。改变新对象内部的引用所指向的对象会影响原始对象。

定义深拷贝创建一个新对象,并递归地复制原始对象及其引用的所有对象。新对象和原始对象完全独立,修改一个不会影响另一个。

二、实例展示

import java.util.ArrayList;
import java.util.List;class ShallowCopyExample {public static void main(String[] args) {List<String> originalList = new ArrayList<>();originalList.add("Hello");originalList.add("World");// 浅拷贝List<String> shallowCopy = new ArrayList<>(originalList);// 修改原始列表originalList.set(0, "Hi");System.out.println(shallowCopy.get(0)); // 输出: Hello}
}

import java.util.ArrayList;
import java.util.List;class DeepCopyExample {public static void main(String[] args) {List<String> originalList = new ArrayList<>();originalList.add("Hello");originalList.add("World");// 深拷贝List<String> deepCopy = new ArrayList<>(originalList);// 深拷贝意味着我们需要手动复制内容List<String> anotherDeepCopy = new ArrayList<>();for (String item : originalList) {anotherDeepCopy.add(new String(item)); // 创建新的 String 对象}// 修改原始列表originalList.set(0, "Hi");System.out.println(deepCopy.get(0)); // 输出: HelloSystem.out.println(anotherDeepCopy.get(0)); // 输出: Hello}
}

三、总结

简单讲:深拷贝相当于递归拷贝 对于其中的对象类型也进行拷贝新的 不用旧的

浅拷贝就只是拷贝了外部的对象 对于对象内部的引用对象还是用的原来的 这样就导致了修改拷贝对象的内部引用对象 导致原来对象的内部对象也改变


http://www.ppmy.cn/ops/162405.html

相关文章

uniapp 系统学习,从入门到实战(五)—— 组件库与常用 UI 组件

全篇大概 7000 字(含代码)&#xff0c;建议阅读时间 30min UniApp 基于 Vue.js 的跨平台特性&#xff0c;提供了丰富的内置组件和灵活的扩展能力。本文将从内置组件、扩展组件库和自定义组件开发三个维度&#xff0c;系统解析 UniApp 的组件生态&#xff0c;并结合实际开发场景…

安科瑞DJSF1352直流电能表在光伏串组箱的应用:提升光伏发电效率与安全的智能利器-安科瑞 耿笠

随着光伏发电技术的快速发展&#xff0c;光伏电站的规模不断扩大&#xff0c;如何高效、安全地管理光伏发电系统成为行业关注的焦点。在光伏发电系统中&#xff0c;光伏串组箱作为连接光伏组件与逆变器的关键设备&#xff0c;其运行状态直接影响整个系统的发电效率和安全性。而…

DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求

DeepSeek 新的 LLM 推理方法 DeepSeek 通过强化学习&#xff08;RL&#xff09;提出了一种创新的改进大规模语言模型&#xff08;LLM&#xff09;推理能力的方法&#xff0c;这在他们最近关于 DeepSeek-R1 的论文中有详细介绍。这项研究代表了在不依赖于大量有监督微调的情况下…

计算机毕业设计SpringBoot+Vue.js在线教育系统(源码+文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

九九乘法表 matlab

J的第一行的1分别乘以I的九列数&#xff0c;就是1的乘法表 1*11 1*22 。。。

leetcode 1472. 设计浏览器历史记录 中等

你有一个只支持单个标签页的 浏览器 &#xff0c;最开始你浏览的网页是 homepage &#xff0c;你可以访问其他的网站 url &#xff0c;也可以在浏览历史中后退 steps 步或前进 steps 步。 请你实现 BrowserHistory 类&#xff1a; BrowserHistory(string homepage) &#xff…

HPE Aruba Networking推出全新解决方案助力零售商增强物联网数据收集与边缘处理能力

全新网络连接解决方案助力IT 团队加强对零售环境的保护与管理,提升物联网(IoT)安全性,同时优化用户体验与运营效率 纽约 — 2025年2月25日 —慧与科技(NYSE: HPE)日前宣布推出全新功能,借助高效的网络连接和高性能边缘计算,助力零售商提升客户体验与运营效率,从而进一步打造零…

SQL server2022的详细安装流程以及简单使用

鉴于SQL Server2008R2版本过于老旧&#xff0c;本文主要讲述如何安装SQL Server 2022。 本文主要详细介绍SQL server2022的详细安装流程以及简单使用&#xff0c;以《数据库系统概论&#xff08;第5版&#xff09;》的第79页—第80页为例&#xff0c;详细介绍如何使用SQL serv…