java克隆的一些解惑

33. JAVA高级技术-对象克隆2(浅克隆) JAVA高级技术-对象克隆2(浅克隆) 阅读详情

java克隆是java中获取与原对象完全相同的另一对象的一种方法

java的相关问题点:假克隆,真克隆;浅克隆,深克隆

java克隆围绕的核心点: 克隆对象的内存地址是否变化

java各种类型变量值传递与引用传递

  • 值传递类型:java基本类型与特殊类(类似final类String)
  • 引用传递类型:java的大部分封装类
  • 具体分析的其他类型变量:各种池等,不受堆栈控制的一些东西

java获取相同对象的几种方法:

  • "=" 赋值
  • new创建新对象,"set/get"方法值拷贝
  • 实现serializable接口,把序列化后对象放流里面遛一圈导入新对象

1. 假克隆:

   克隆对象与原对象指向同一块内存地址,即实为同一个对象,此时更改一个其中一个对象另一个对象也会跟着改变。

2.真克隆:

   克隆对象和原对象在内存中享有两块不同的地址,改变一个对象不影响另一个对象。

java的深浅克隆概念基于对cloneable接口的实现与clone方法的调用:

java克隆的真假和深浅是两个不同的概念

区别在于克隆的完全实现与部分实现,浅克隆对值传递类型变量真克隆,对引用传递类型变量假克隆,深克隆对所有类型变量都是真克隆。

3.浅克隆:

      对象的的成员变量如果包括引用类型,直接调用父类的clone方法无法把所有成员变量都真克隆到克隆对象,成员变量中的引用类型在新对象中依旧是拷贝的一份引用地址

4.深克隆:

     在对象的成员变量里没有引用类型的情况直接调父类clone方法就是深克隆,有引用类型的时候重写clone方法,在clone方法里给引用类单独实现并调用clone方法。如果引用类包含其他引用类,每一层引用类都要重写并给引用变量调用clone方法。

 

突然间就进入18年的最后一个月了,最近实在太多事情,写的有些仓促了;序列化的问题就拿出来新开一篇写吧。

自建智能算力中心与第三方算力租赁的深度分析 自建智算中心和第三方算力租赁的主要区别如下:对比维度自建算力中心第三方算力租赁初期成本数千万至数亿元硬件采购+机房基建零硬件投入,按需付费(如1元/卡时)部署速度6-12个月(采购、部署、调试)即时开通,分钟级资源调度运维难度需专业IT团队,承担断电、故障等风险服务商全托管,SLA保障99.95%可用性弹性扩展扩容需重新采购硬件,周期长、成本高支持秒级弹性伸缩,应对流量峰值技术迭代硬件更新周期长,易被淘汰自动升级。 阅读详情

相关推荐

芯片设计中的STA实战:如何避免时序违例(含常见问题解析)

本文深入探讨了芯片设计中静态时序分析(STA)的实战应用,重点解析了如何避免时序违例。文章从STA的核心逻辑与约束制定出发,强调了将时序意识植入RTL编码与综合阶段的重要性,并详细介绍了后端物理实现中的时序收敛策略。同时,针对跨时钟域路径误报、多工艺角违例等常见问题提供了深度解析与调试技巧,旨在帮助IC设计工程师系统性地掌握时序分析与优化方法。

open4的博客 513

深拷贝和浅拷贝

深拷贝与浅拷贝 对对象的深拷贝和浅拷贝我们并不陌生。 (1)浅拷贝: 在浅拷贝中,如果原型对象的成员变量是值类型,将复制一份给克隆对象;如果原型对象的成员变量是引用类型,则将引用对象的地址复制一份给克隆对象,也就是说原型对象和克隆对象的成员变量指向相同的内存地址。简单来说,在浅拷贝中,当对象被复制时只复制它本身和其他包含的值类型的成员变量,而引用类型的成员对象并没有复制。在Java中,通过覆盖O...

zlj1217的博客 263

计算机组成原理(第三版)唐朔飞-第一章第二章-课后习题

计算机组成原理

weixin_45735391的博客 7万+

使用成员方法实现对象克隆

/对象调用成员方法并完成对象传参后将克隆得到的新对象 直接地址传递·//太麻烦 直接进行地址传递更方便 此文代码仅为训练类 成员方法作用。//直接地址传递也行。//定义成员方法 :修饰符 返回值类型 方法名 (参数列表)//此处的对象克隆仅为成员变量克隆 可以实现成员方法的克隆。//在一个类中可以实例化另外一个类的对象。//解决问题的方法封装在类中。//要被克隆的对象所属的类。//要完成克隆方法所属的类。//此类主要使用成员变量。//此类主要使用成员方法。...

m0_61843855的博客 129

数字电路逻辑与设计实验一 门电路逻辑功能及测试

(1)选二输入四异或门电路 74LS86,按图 1-8 接线,输入端 1、2、4、5 接逻辑开 关(S1~S4),输出端 A、B、Y 接电平显示发光二极管.用六反相器(非门)按图 1-11 接线,输入 80KHz 连续脉冲,用双踪示波器测输入, 输出相位差,计算每个门的平均传输延迟时间的 tpd 值。测试不同的输入组合:对门电路进行全面的测试,尝试不同的输入组合,包括各种可能的逻辑状态。检查门电路的输入:确认门电路的输入是否正确,并且输入信号的电平符合门电路的规格要求。确保输入信号的稳定性和准确性。

欢迎交流学习心得 2万+

PhotovoltaicPanelCleanlinessDetector:基于YOLOv8的光伏板清洁状态监测系统

data.yamlyaml复制编辑names:0: clean1: dust3: leaves4: shadow✅ 高精度污染识别✅ 具备实时检测与UI展示✅ 可本地化部署应用未来方向增加污染程度分级(轻度、中度、严重)加入时间序列分析(污染变化趋势预测)无人机集成巡检模块。

YOLO 276

Java Object的clone方法分析

Java Object的clone方法分析

夜雨柠檬的博客 662

【基础-单选】Row组件中有两个Text组件,如果使用justifyContent对齐方式,下面哪个属性可以实现左右两端对齐:

Row组件中有两个Text组件,如果使用justifyContent对齐方式,下面哪个属性可以实现左右两端对齐

江拥羡橙的博客 1304

Java 对象克隆(clone)

基本数据类型(boolean,char,byte,short,float,double,long)的复制很简单,比如:int width = 5; int height = width;基本数据类型进行这样复制是没有问题的。按照上面的方法进行对象的复制,首先自定义一个汽车类,该类有一个color 属性,然后新建一个汽车实例car,然后将car 赋值给car1 即car1= car; 代码和结果如

小北的博客 5310

实战:RK3568 Android14 点亮 LVDS 屏幕

4组数据 (D0~D3) + 1组时钟 (CLK)。最大支持 1280x800 @ 60Hz。8组数据 (Even03, Odd03) + 2组时钟。支持 1080P 及以上。/ {/* 背光与电源 *//** 关键配置:数据格式映射* 可选值: "jeida-18", "jeida-24", "vesa-24"* 6位屏选 xx-18, 8位屏选 xx-24* 颜色不对(偏色/底片效果)就换 VESA <-> JEIDA*/

qq_33427070的博客 1165

YOLOv11改进 - 卷积Conv | GCNet之金箍棒块GCBlock : 重参数化捕获全局依赖 | CVPR 2025

文介绍了GCBlock在YOLOv11中的结合应用。GCBlock是GCNet的核心组件,能高效捕获特征图中的全局依赖关系,融合了非局部网络和挤压 - 激励网络的优势,降低计算成本并保障模型性能。其遵循“上下文建模 - 特征变换 - 特征融合”框架,通过全局平均池化、全连接层等操作生成注意力权重。我们将GCBlock集成进YOLOv11,替代原有的部分卷积模块,实现更高效的全局上下文建模。实验证明,YOLOv11-GCBlock在目标检测任务中表现出色,展现了GCBlock在深度学习中的广泛应用前景。

魔改工程师的博客 905

java中浅克隆与深克隆解析

文章目录简介浅克隆深克隆嵌套使用clone()方法序列化方式浅克隆和深克隆的比较 简介 所谓克隆,就是指依照已存在的数据,复制出一份一样的数据。 java中的克隆有浅克隆和深克隆之分,造成这种区别是因为java中对于基本数据类型和引用类型类型的存储是不一样的,基本数据类型存储在栈中,而引用数据类型存储在堆中,因此造成了在克隆时的不同操作。 实现克隆的方法可以按照三步进行: 实现Clonable接口; 重写clone()方法。 调用clone()方法克隆对象。 浅克隆 package test; imp

1+1=王的博客 4599

基于物联网技术设计的微型消防小车控制系统(STM32+ESP8266局域网)(181)

基于物联网技术的小微型消防车控制系统。通过远程控制功能,用户能够灵活操作消防车的行驶,方便快速抵达火灾现场。环境感知功能实时采集烟雾浓度、温湿度信息,为灭火决策提供科学依据。火源定位功能采用自动和手动两种模式,准确迅速地定位火源,并通过报警提示用户。灭火功能则根据火源定位结果,自动或手动启动干粉灭火器进行高效灭火。这些功能的结合实现了对小型火灾的全面应对,提升了消防效率与安全性,减少了火灾带来的损失。通过本项目的设计与实现,为消防领域提供了一种创新且实用的解决方案。

3080

【Java】浅克隆、深克隆

步骤如下1、重写Object中的clone()方法2、让JavaBean类实现Cloneable接口3、创建原对象并调用clone()即可在Java中有两种克隆方式:浅克隆 和 深克隆浅克隆:不管对象内部的属性是基本数据类型还是引用数据类型,它都会完全拷贝过来深克隆:如果是基本数据类型,它会把记录的值拷贝过来;如果是字符串,那么它会复用串池中的;如果是除字符串外的引用数据类型,它就会创建新的小空间。而在我们之前讲的Object中的clone()方法属于浅克隆。

qq_39921135的博客 1500

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Java浅克隆与深克隆

通常我们想复制一个对象,可以自己new出一个对象,并对相应的属性存入数据以实现克隆的目的。可是当属性较多时,这样的方式会十分麻烦。然而Java早已考虑好一切,我们知道,所有的对象都有一个共同的父类Object,而Object类中已经定义好了protected修饰的clone()方法,今天我们从这个方法开始,讲述Java的浅克隆与深克隆。 浅克隆与深克隆的区别 **浅克隆:**复制对象时仅仅复制对象...

学习即修行 6万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Java中对象的克隆

浅克隆只复制对象本身,不复制对象中的引用类型成员变量所指向的对象(记录的是引用类型变量的地址)。新旧对象之间可能存在共享的引用关系。修改新对象中引用类型成员变量的状态可能会影响原始对象。

2303_79615760的博客 2119

java的浅克隆_java 浅克隆 深克隆

对象的克隆是java的一项高级技术,他可以根据给定的对象,获得与其完全相同的另一个对象。1.浅克隆主要是复制对象的值2.深克隆:当类存在聚合关系的时候,克隆就必须考虑聚合对象的克隆,可以复制引用类型的字段。一、常见的错误:Employee 类package text1;public classEmployee {privateString name;publicString getName() {...

weixin_36384964的博客 349

Java对象的浅克隆和深克隆

为什么需要克隆      在实际编程过程中,我们常常要遇到这种情况:有一个对象A,在某一时刻A中已经包含了一些有效值,此时可能会需要一个和A完全相同新对象B,并且此后对B任何改动都不会影响到A中的值,也就是说,A与B是两个独立的对象,但B的初始值是由A对象确定的。在Java语言中,用简单的赋值语句是不能满足这种需求的,要满足这种需求有很多途径。       克隆的实现方式

caomiao2006的专栏 9892

Java 浅/深克隆、克隆数组

Java 浅/深克隆、克隆数组。及,示例代码演示。

一步一步往上爬 3034

Java的对象克隆

在浅克隆中:源对象和克隆对象的成员变量指向相同的内存地址 直接重写Object的clone(),会抛出异常 正确用法:1.先实现实现Cloneable接口,再重写clone()方法 测试 作为属性的类(没有重写clone方法) 被克隆的类(重写了clone方法) 测试 两个对象关联的同一个Address对象,Address修改了,克隆对象的信息也发生了变化在深克隆中,无论源对象的成员是基本类型/引用类型,都会复制给克隆对象 也就是在深克隆中,对象和所有成员都会被克隆 而在浅克隆中,只会克隆对象和基本类型成

lanleihhh的博客 2596

Java学习之克隆

克隆概念以及深克隆与浅克隆

2301_81288466的博客 1583

Java -克隆实现方式 深克隆与浅克隆

我们平时复制一个值类型数据直接复制就好了,但是复制一个引用类型比如对象的时候就无从下手了,因为赋值只能赋引用,而如果手动操作把里面的值取出赋给新对象又太麻烦耗时了,有没有好办法?java提供了clone。克隆类型在Java语言中,数据类型分为值类型(基本数据类型)和引用类型,值类型包括int、double、byte、boolean、char等简单数据类型,引用类

HJsir的博客 3252

Java对象克隆——浅克隆和深克隆的区别

在Java中对象的克隆有深克隆和浅克隆之分。有这种区分的原因是Java中分为基本数据类型和引用数据类型,对于不同的数据类型在内存中的存储的区域是不同的。基本数据类型存储在栈中,引用数据类型存储在堆中。 什么是克隆 克隆就是依据已经有的数据,创造一份新的完全一样的数据拷贝。 实现克隆有多种方式,可以手工的new出一个新的对象,然后将原来的对象信息一个一个的set到新的对

XXX 2万+

Java对象克隆

Java对象克隆,为什么要对象克隆,深克隆和浅克隆详解,深克隆实现方式,浅克隆实现方式。深克隆和浅克隆代码示例

2301_77713282的博客 1460

Java中的深克隆和浅克隆的原理及三种方式实现深克隆

1 克隆概述 Java中实现对象的克隆分两种一种是浅克隆一种是深克隆。首先java中Clone方法对于对象克隆的机制是:对象的基本数据类型的成员变量会被全部复制,引用类型的成员变量不会复制,只会复制该变量的引用,这样被克隆对象的引用类型的成员变量还是指向了原对象的同名引用类型的成员变量的堆内存空间,对其中一个对象的引用类型成员变量的修改会影响到另外一个被克隆对象或者源对象的引用类型的成员变量。 浅克隆:最普遍的克隆,即对象实现cloneable接口和重写clone方法,然后调用一次内部不做改写的clon

m0_69305074的博客 5365

Java的浅表克隆和深表克隆

Java克隆的浅显理解

ShenFly02200059的博客 1387

java 的克隆_Java中的克隆

根据一个现有对象克隆出多个对象,这叫做原型模式。Java中的Cloneable接口定义了对象的克隆,它是一个声明式接口,没有定义任何抽象方法。Cloneable接口存在的唯一意义是:告知Java虚拟机,可以在该对象上调用Clone()方法。实际上,Clone()方法定义在Object类中,并且它是一个protected方法,如下所示:protected native Object clone() ...

weixin_39588209的博客 241
上一篇: java普通代码块,静态代码块和构造器在实例化时执行顺序
下一篇: CentOS7使用firewalld打开关闭防火墙与端口
sin_404
博客等级 码龄10年 93粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值