首页 文章 精选 留言 我的
优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/621681

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

Java利用序列化实现对象的深拷贝

浅拷贝 对象实现的接口Cloneable的clone()方法存在一个缺陷,它并不会将对象的所有属性全部拷贝过来,而是有选择性的拷贝,即浅拷贝!基本规则如下: 1、 基本类型 如果变量是基本很类型,则拷贝其值,比如int、float等。 2、 对象 如果变量是一个实例对象,则拷贝其地址引用,也就是说此时新对象与原来对象是公用该实例变量。 3、 String字符串 若变量为String字符串,则拷贝其地址引用。但是在修改时,它会从字符串池中重新生成一个新的字符串,原有字符串对象保持不变。 所以:浅拷贝只是Java提供的一种简单的拷贝机制,不便于直接使用。 利用序列化实现对象的深拷贝 如何利用序列化来完成对象的拷贝呢?在内存中通过字节流的拷贝是比较容易实现的。把母对象写入到一个字节流中,再从字节流中将其读出来,这样就可以创建一个新的对象了,并且该新对象与母对象之间并不存在引用共享的问题,真正实现对象的深拷贝。 public class CloneUtils { @SuppressWarnings("unchecked") public static <T extends Ser...

数据结构(Java)-持续更新补充

复习一下数据结构,巩固一下基础。之后打算再学一下算法,之前刷题总感觉摸不清门道,应该是概念没彻底搞明白。 栈 import java.util.Arrays; public class Stack { private int size; private int[] array; public Stack() { this(10); } public Stack(int init) { if(init <= 0) { init = 10; } array = new int[init]; } public void push(int item) { if(size == array.length) { array = Arrays.copyOf(array, size * 2); } array[size++] = item; } public int peek() { if(size == 0) { throw new ArrayIndexOutOfBoundsException("栈已经空啦"); } return array[size - 1]; } public int p...

相关文章

发表评论

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册