深浅拷贝--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:原对象添加"男生",拷贝对象也包含该元素(共享堆对象)
    }
}
相关推荐
怒放吧德德6 小时前
Netty 4.2 入门指南:从概念到第一个程序
java·后端·netty
雨中飘荡的记忆8 小时前
大流量下库存扣减的数据库瓶颈:Redis分片缓存解决方案
java·redis·后端
心之语歌10 小时前
基于注解+拦截器的API动态路由实现方案
java·后端
华仔啊11 小时前
Stream 代码越写越难看?JDFrame 让 Java 逻辑回归优雅
java·后端
ray_liang11 小时前
用六边形架构与整洁架构对比是伪命题?
java·架构
Ray Liang13 小时前
用六边形架构与整洁架构对比是伪命题?
java·python·c#·架构设计
Java水解13 小时前
Java 中间件:Dubbo 服务降级(Mock 机制)
java·后端
阿白的白日梦16 小时前
winget基础管理---更新/修改源为国内源
windows
SimonKing17 小时前
OpenCode AI辅助编程,不一样的编程思路,不写一行代码
java·后端·程序员
FastBean17 小时前
Jackson View Extension Spring Boot Starter
java·后端