深浅拷贝--Java

一.总结

特性 浅拷贝 深拷贝
新对象创建 是 是
基本类型成员拷贝 复制实际值 复制实际值
引用类型成员拷贝 复制引用地址(共享堆对象) 复制实际堆对象(完全独立)
对象独立性 不独立(引用类型成员共享) 完全独立(无任何共享资源)
修改影响 引用类型成员修改会相互影响 彼此修改无任何影响

二.浅拷贝

复制代码
// 测试浅拷贝
public class ShallowCopyTest {
    public static void main(String[] args) throws CloneNotSupportedException {
        // 1. 创建原对象
        Hobby hobby = new Hobby("篮球");
        List<String> tags = new ArrayList<>();
        tags.add("学生");
        tags.add("运动爱好者");
        User originalUser = new User(1, "张三", hobby, tags);

        // 2. 浅拷贝生成新对象
        User cloneUser = (User) originalUser.clone();

        // 3. 修改原对象的基本类型成员
        originalUser.setId(2);
        // 4. 修改原对象的引用类型成员(Hobby 和 List)
        originalUser.getHobby().setName("足球");
        originalUser.getTags().add("男生");

        // 5. 打印结果
        System.out.println("原对象:" + originalUser);
        System.out.println("拷贝对象:" + cloneUser);

        // 结果分析:
        // 1. 基本类型 id:原对象修改为 2,拷贝对象仍为 1(互不影响)
        // 2. 引用类型 Hobby:原对象修改为足球,拷贝对象也变为足球(共享堆对象)
        // 3. 引用类型 List:原对象添加"男生",拷贝对象也包含该元素(共享堆对象)
    }
}
相关推荐
露天赏雪15 分钟前
第3篇:Sentinel熔断降级实战:大模型接口抖动时的服务兜底方案
java·开发语言·人工智能·spring boot·spring·servlet·sentinel
天天被压力22 分钟前
【A股分钟级高频数据完全手册 #06】北交所分钟级数据接口:京市股票Pro版最新分时
java·人工智能·python
天天被压力28 分钟前
【A股分钟级高频数据完全手册 #05】指数历史分钟数据接口:Pro版沪深指数分时回放
java·人工智能·python
captain37644 分钟前
▲统一功能——DispatcherServlet源码分析
java·spring·java-ee·log4j·maven
金銀銅鐵1 小时前
JDK 21 中 List.of 的实现细节:从 List12 到 ListN
java·后端·ai编程
yeccheng2 小时前
MySQL 索引超详解:从底层 B+ 树到面试高频考点
java·开发语言·jvm·mysql·面试
联犀2 小时前
纯 Go 的 CAD 开源库 go-cad:直接解析 DWG/DXF,现在也能导出 PDF
开发语言·golang·pdf
这个昵称不容易3 小时前
SpringBoot 读书笔记共享平台部署实战:97 个 Java 文件 / 113 个接口 / 10 张表
java·springboot·毕设
zjxtxdy3 小时前
C++面向对象程序开发-类与对象
开发语言·c++
金銀銅鐵5 小时前
一个 Java 文件实现《孫子兵法·始計篇》中英对照阅读器
java·后端·ai编程