博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java浅拷贝深拷贝 序列化进行拷贝 延迟拷贝
阅读量:2455 次
发布时间:2019-05-10

本文共 729 字,大约阅读时间需要 2 分钟。

文章参考:https://juejin.im/post/5c988a7ef265da6116246d11

拷贝的目的

大多数情况下是在新的上下文环境中复用原有对象的大部分或全部数据

浅拷贝

1.浅拷贝对象为基本数据类型: 将基本数据类型的值 拷贝一份

2. 浅拷贝对象为引用数据类型: 将该对象的地址拷贝一份 若修改了原数据的值 就会影响拷贝的对象的值
3. 实现 直接调用Object.copy()即可

深拷贝

1.深拷贝对象为基本数据类型: 将对象的值拷贝一份

2.深拷贝对象为引用数据类型: 创建一个新的对象 和被拷贝对象一致 将被拷贝对象的所有值放入新的对象中 从此旧有对象做的所有改变不会再影响到新拷贝的对象
3.实现 重写clone()方法 创建一个相同的对象
4.缺点: 相对于浅拷贝时间长 花销大

浅拷贝与深拷贝的选择

  1. 当数据类型全部是基本数据类型时 应该使用浅拷贝
  2. 当数据类型有引用类型时 要根据具体需求 如果对象的值不会被改变 则应该选择浅拷贝 若引用对象经常发生改变 应该使用深拷贝

序列化进行拷贝

  1. 定义 将对象写入到一个可持久保存的序列文件中,并在需要的时候将它读取出来 属于深拷贝
  2. 要求: 被序列化拷贝的对象需要实现Serializable接口
  3. 实现
    3.1 确保对象图中的所有类都是可序列化的
    3.2创建输入输出流
    3.3使用这个输入输出流来创建对象输入和对象输出流
    3.4将你想要拷贝的对象传递给对象输出流
    3.5从对象输入流中读取新的对象并且转换回你所发送的对象的类

延迟拷贝

  1. 定义 是浅拷贝和深拷贝的组合
  2. 在拷贝一开始使用的浅拷贝 并使用一个计数器来记录有多少对象共享这个数据 他会决定被共享数据是否需要深拷贝 实际很少用到

转载地址:http://penhb.baihongyu.com/

你可能感兴趣的文章
irc ubuntu_IRC入门
查看>>
Phire CMS:功能丰富的轻量级内容管理系统
查看>>
庆祝一下_加入我们,庆祝开放组织的一年
查看>>
dropbox为什么被屏蔽_Python社区和Dropbox为增加多样性而采取的步骤
查看>>
路由器搭建个人网站_PittMesh路由器归个人所有
查看>>
raspberry pi_Picademy:Raspberry Pi基金会的老师的免费专业发展
查看>>
retropie游戏版权_RetroPie的新网站和发行版,针对Linux的三款新游戏以及更多游戏新闻...
查看>>
开源项目贡献者_在现代开源中发展贡献者基础
查看>>
在新手友好的Linux发行版Korora上大吃一惊
查看>>
Raspberry Pi 3推出了更快的CPU,板载Wi-Fi和蓝牙
查看>>
不同管理岗层级的团队影响力_高影响力团队的最高要求
查看>>
j pocket_Wallabag:Pocket的开源替代品
查看>>
cms系统和管理员系统区别_如何成为懒惰的系统管理员
查看>>
linux dd格式化磁盘_如何在Linux中使用dd而不破坏磁盘
查看>>
dropbox内容更改_Dropbox替代品,Git技巧,Linux技巧,DevOps必须阅读的内容等等
查看>>
pandoc epub_使用Pandoc将您的书变成网站和ePub
查看>>
开源 计划管理_公司开源计划的三大好处
查看>>
devops java使用_谁会在使用DevOps时最大程度地退缩?
查看>>
java 补丁差异_差异和补丁简介
查看>>
python django_8个Python软件包将简化Django的生活
查看>>