Java的深拷贝最新版欣欣十三水棋牌_房卡十三水全套棋牌源码下载和浅拷贝

关于最新版本的Java新版13水棋棋牌室13水全套棋牌源码下载超级MAN。,只是为了创建与已知对象相同的对象。在日常编码中,它可能用得不多,但这是面试官经常问的问题,理解深拷贝和浅拷贝的原理将导致对什么是更深入的理解调用Java中的值传递或引用传递。
    回到顶峰
    创建对象的1, 5种方法。
    
    通过新关键词
    
    这是通过用新的关键字调用类的参数化或非参数构造函数来创建对象的最常见的方法。例如,对象Obj=新对象();
    
    (2)传递类类的NeWistSistar()方法。
    
    默认是通过调用类的无参数方法创建对象。
    
    第三,传递构造函数类的NeWistSee方法。
    
    这是通过与第二种方法类比来实现的。对象是通过Java的NeWistSistar()方法指定构造函数来创建的。兰格。构造函数类。
    
    人P3=(人)人.Cyr.GETFrimultor(){ 0 }。
    
    事实上,第二种方法使用类的NeWistSistar()方法来创建对象,其内部调用是构造函数的NeWist立场()方法。
    
    (4)采用克隆法
    
    克隆是对象类中的一种方法。通过使用对象A.clone()方法,可以创建内容与对象A.Clone克隆的内容相同的对象B,正如名称所示,克隆克隆创建了一个相同的对象。
    
    P4=(人)P3克隆();
    
    反序列化
    
    序列化是Java对象数据在堆内存中的存储,在某种程度上,对象被存储在磁盘文件中或传递到其他网络节点(通过网络传输)。反序列化是将磁盘文件或网络节点中的对象数据恢复到Java对象模型的过程。
    
    如何实现它可以参考我的博客。
    回到顶峰
    3、克隆方法
    
    在这个博客中,我们通过调用对象类的克隆()方法来讨论Java的深度和浅拷贝。在Objist.C类类中,源代码是:
    
    受保护的本机对象克隆()抛出C克隆NoeToReTestExpTebug;
    
    这是用原生关键字来装饰的一种方式。有一个关于本地关键词的博客。你不懂也没关系。只需知道用原生关键字来装潢的方法是告诉操作系统,我不执行它,让操作系统做它。我们不需要确切地知道如何实现它,我们只需要知道克隆方法是用来复制对象和产生一个新的对象。新对象与原始对象之间的关系是什么
    回到顶峰
    4。基本类型和引用类型
    
    在这里,我们将推广一个概念,即Java中的基本类型和引用类型之间的区别。
    
    在爪哇中,数据类型可分为两类:基本类型和引用类型。
    
    基本类型,也称为值类型,包括字符类型char、布尔类型和数字类型byte、.、int、long、float、double。
    
    引用类型包括类、接口、数组、枚举等。
    
    Java将内存空间划分为堆和堆栈。基类型将值直接存储在堆栈上,而引用类型在堆栈上存储引用,并且实际存储的值在堆栈上,指向堆栈中的引用存储在堆栈中的数据。
    
    U3000和U3000
    
    上面定义的值a和B是原语类型,直接存储在堆栈上;而C和D是由String声明的,String是引用类型,其引用地址存储在堆栈上,然后指向堆的内存空间。
    
    下面的d=c;该语句指示对C的引用被分配给d,然后C和D指向相同的堆内存空间。
    回到顶峰
    5。浅拷贝
    
    让我们看看下面的代码:
    查看代码
    查看代码
    
    这是我们要分配的基本类Person。接下来,我们生成一个Person对象,并调用它的克隆方法来复制一个新对象。
    
    注意:要调用对象的克隆方法,必须使类实现可克隆接口并重写克隆方法。
    
    测试:
    查看代码
    
    打印结果为:
    
    U3000和U3000
    
    原始类人实现可克隆接口并重写克隆方法。它还有三个属性,一个由引用类型String定义的pname,一个由引用类型int定义的页面,和一个引用类型Address,它是一个自定义类,还包含两个属性pprovices和CITy。
    
    然后查看测试内容,首先创建一个Person类对象p1,它的pname是Zhangngsan,第21页,地址类Address为湖北省和武汉市两个属性,然后调用clone()方法复制另一个对象P2,然后打印这两个对象的内容。
    
    从第一行和第三行打印结果:
    
    P1:COM.YES.Test.Nave39319F9
    
    P2:COM.YES.Test.Heave258E466
    
    可以看出,这是两个不同的对象。
    
    从打印在第5行和第6行的对象的内容中,原始对象P1和克隆对象P2是相同的。
    
    在代码中,我们刚刚将克隆对象P2的属性Address更改为湖北省荆州市(原始对象P1是湖北省武汉市),但是从第7和第8行的打印结果中,对原始对象P1和克隆对象P2都进行了修改。
    
    也就是说,对象Person的属性Address在克隆之后,实际上只是其引用的副本,它们指向相同的堆内存空间,当修改一个对象的属性Address时,另一个对象将改变。
    
    U3000和U3000
    
    
    
    浅拷贝:创建一个新对象,然后将当前对象的非静态字段复制到新对象,如果字段是值类型,则复制字段,如果字段是引用类型,则复制引用而不是引用对象。相同的对象。
    回到顶峰
    6,深度拷贝
    
    有了清晰的拷贝,深拷贝很容易理解。
    
    深拷贝:创建一个新对象,然后将当前对象的非静态字段复制到新对象,而不管该字段是值类型还是引用类型,然后复制一个单独的副本。当您修改一个对象的任何内容时,它不会影响另一个对象的内容。
    
    U3000和U3000
    
    那么我们如何实现深度复制呢对象类提供的克隆只是一个浅拷贝。
    回到顶峰
    7,如何实现深度复制
    
    深度复制的原理是原始对象和克隆对象的引用类型属性不指向相同的堆内存。有三种方法可以做到这一点。
    让我们重写每个引用类型属性内的克隆()方法。
    
    由于引用类型不能实现深拷贝,所以我们将每个引用类型划分为用于浅拷贝的基本类型。重写地址类内的克隆方法。
    
    Address.class:
    查看代码
    
    类的克隆()方法:
    查看代码
    
    如前所述,我们将发现P2对象的Address属性已经更改,P1对象的Address属性没有更改。
    
    但是这种方法有一个缺点。这里我们只有一个用于Person类的Address引用类型,而不是用于Address类,因此我们只是重写用于Address类的clone方法,但是如果Address类也有一个引用类型,那么我们将重写它的clone方法,然后重写多个Reference类型,执行多少次我们必须重写它们吗如果有许多引用类型,代码的数量显然很大,因此这种方法是不合适的。
    第二,使用序列化。
    
    序列化将对象写入流以便于传输,而反序列化将对象从流中读出。对象,然后通过反序列化得到对象。
    
    注意,需要序列化的每个类都实现Serializable接口,如果属性不需要序列化,则可以将其声明为暂时的,而不将其从克隆属性中排除。
    查看代码
    
    因为序列化生成两个完全独立的对象,所以不管嵌套了多少引用类型,序列化都实现深度复制。

原文地址:https://www.cnblogs.com/h5qipaiyuanma/p/9780185.html

时间: 2024-10-05 00:34:47

Java的深拷贝最新版欣欣十三水棋牌_房卡十三水全套棋牌源码下载和浅拷贝的相关文章

你也可以用java的swing可以做出这么炫的mp3播放器_源码下载

I had published the blog : 你用java的swing可以做出这么炫的mp3播放器吗? and to display some screenshots about this MP3 Player. The target for this blog is that to publish the source code, and you can download the source code and give me some advices if possible. The

Java新手练习项目、毕业设计项目源码下载

最近自己做了个技术博客网站,整理了一下学习java过程中做的例子和小项目,都放在了网站了提供下载,有新手入门的例子,也有java web例子,还有本人大学期间的毕业设计源码,都可以下载.地址:微儿博客-Java新手练习项目.毕业设计项目源码下载

java socket控制台版本聊天室程序源码下载

原文:java socket控制台版本聊天室程序源码下载 代码下载地址:http://www.zuidaima.com/share/1550463257578496.htm java socket控制台版本聊天室程序源码下载,学习的时候写的,适合学习java基础 java网络编程基础用 标签: java socket 控制台 聊天室 源码话题: 网络编程 java socket控制台版本聊天室程序源码下载,布布扣,bubuko.com

【java项目实践】详解Ajax工作原理以及实现异步验证用户名是否存在+源码下载(java版)

一年前,从不知道Ajax是什么,伴随着不断的积累,到现在经常使用,逐渐有了深入的认识.今天,如果想开发一个更加人性化,友好,无刷新,交互性更强的网页,那您的目标一定是Ajax. 介绍 在详细讨论Ajax是什么之前,先让我们花一分钟了解一下Ajax做什么.如图所示: 如上图展示给我们的就是使用Ajax技术实现的效果.伴随着web应用的越来越强大而出现的是等待,等待服务器响应,等待浏览器刷新,等待请求返回和生成新的页面成为了程序员们的最最头疼的难题.随着Ajax的出现使web应用程序变得更完善,更友

福建十三水房卡源码下载搭建教程

后台版本控制+资源更新步骤 (1)将工程下的res和src目录复制到version/fromSource 目录中 (2)使用cocos2dx命令 把src目录下的js文件转换成jsc文件 在fromSource目录下执行 cocos jscompile -s . -d . (3)删除掉src目录下的js 文件 只保留jsc文件 (4)检查一下fromSource/res是否有loading.js和loading.jsc 如果有把这2个删除掉 不然会出错,这个不需要. (5)检查VersionBu

java注解入门(含源码下载)

注解(Annotation)是从jdk1.5开始增加的特性.学习注解能够读懂框架的代码:让编程更加简洁,代码更加清晰. 注解概念:java提供了一种原程序中的元素关联任何信息和任何元数据的途径和方法. 注解需要import java.lang.annotation.*; java自带的3个注解: @Override//覆盖 @Deprecated//过时 @SuppressWarnings()//抑制警告 自定义注解的语法要求 一般自定义注解的代码如下://“Description 注解”在下面

java OA开源办公系统源码下载

原文:java OA开源办公系统源码下载 源代码下载地址:http://www.zuidaima.com/share/1550463681268736.htm 项目截图

房卡麻将源码下载十三水房卡麻将源码搭建教程

代码中需修改的地方:1.cocos2d-x-3.14.1\cocos\Android.mk 里面 #$(call import-module,curl/prebuilt/android)修改成$(call import-module,curl/prebuilt/android) 2.cocos2d-x-3.14.1\extensions\Android.mk 添加如下  目的是为了支持外部静态curl库LOCAL_STATIC_LIBRARIES += cocos_network_staticL

2018新版微信极速赛车飞艇8合一源码下载搭建

2018新版微信极速赛车飞艇8合一源码下载搭建教程:http://fanshubbs.com/thread-255-1-1.html 参考搭建源码项目 <微信公众号北京赛车PK10源码下载> 示例代码 C++ #include "hpsocket/HPSocket.h" /* Listener Class */ class CListenerImpl : public CTcpPullServerListener { public: // 5. process networ