我也来谈Clone方法

JAVA中,函数的参数,是传值,对简单类型来说,是数值。
对对象来说,传的是对象的指针。

我记得刚到第一家公司的时候,还和别人争论过,我也查找了不少的国内国外文章。

Object上的Clone方法是一个本地方法,本地方法的运行速度很快。

子类只要实现了Clonable接口,并重载了Clone方法,
一般这样子重写:
[code]
public Object clone() {
CloneC o = null;
try {
o = (CloneC) super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return o;
}
[/code]

如果该类的上面的每个子类都这样Override了Object的clone方法之后

那么执行该类的clone方法,相当于就是执行object上的clone方法

object上的方法,为什么能执行的快?其实很简单,在该类所在内存空间上

扫描一遍,复制那些值,在内存上的操作当然是最快速的了。所以clone速度才快嘛。

但此时应该注意到,你克隆出来的对象里的非简单类型,是一个指针,该指针指向的对象

和在被克隆的对象里的内存地址是一致的,这样也比较好理解,clone方法没必要为clone方法来假设你需要深度克隆,在内存管理上也可能存在着浪费。
所以你希望将非简单类型的数据和被克隆的里面的相对应的数据值相等,但是指针指向不一样的地址,实现所谓的深度克隆的话,应该要保证该类的内部非简单类型都实现了clone方法。
Sigrity SPEED2000 General SI Simulation模式如何进行信号仿真分析操作指导-DDR 本例是几个简单的板载DDR颗粒的结构,本例中使用General SI Simulation模式仿真DDR信号,结构拓扑如下,Addcmd,clk,cke都是T拓扑。Sigrity SPEED2000 General SI Simulation模式可以对信号进行仿真分析,仿真将电源视为理想电源,以下图为例进行说明。DQS的接收端模型设置为DQS_34_ODT60_1333。模式如何进行信号仿真分析操作指导-DDR。附带驱动和接收端的IBIS模型。 阅读详情

相关推荐

Claude code-review 插件深度解析:AI 驱动的智能代码审查系统

Claude Code Review 插件深度解析:AI 驱动的智能代码审查系统 该插件通过多 Agent 并行工作方式自动审查 PR,采用置信度评分机制(80+分保留)过滤误报,确保高质量反馈。核心功能包括: 5个专业化 Agent 并行审查(规范合规性、bug检测、历史分析等) 8步工作流程:从资格检查到 GitHub 评论发布 创新性置信度评分系统(0-100分),严格过滤7类误报 结合 CLAUDE.md 规范和历史 PR 评论实现一致性审查 技术亮点: 多 Agent 架构(Haiku/Sonne

虚心若愚 2264

Java中clone方法详解

Java中clone方法详解一、clone简介二、Java中对象的创建:new与clone创建对象的区别三、复制对象or复制引用:第一个例子(复制引用):第二个例子(复制对象):四、深拷贝 浅拷贝原理浅拷贝深拷贝 一、clone简介 clone 就是复制 , 在Java语言中, clone方法被对象调用,所以会复制对象。所谓的复制对象,首先要分配一个和源对象同样大小的空间,在这个空间中创建一个新...

Da_Xiong的博客 2万+

【ESP32-IDF】I2S音频协议实战:从PDM麦克风到PCM扬声器的全链路解析

本文深入解析ESP32-S3的I2S音频协议,从PDM麦克风采集到PCM扬声器输出的全链路实现。详细介绍了硬件PDM转PCM、Standard模式配置及混合模式协同工作,提供实战代码与性能优化建议,助力开发者高效完成嵌入式音频项目开发。

pea55的博客 888

Object类的clone方法

Object类的clone方法 Object是所有类的基类,当你没有显示extends一个父类时,编译期会自动为你加上一个Object类。 这是一个native方法,说明这个方法的实现不是在java中,而是由C/C++实现,并编译成.dll文件,由java调用。registerNatives主要是将C/C++的方法映射到java中的native方法,实现方法命名的解耦。了解即可,知道是注册,细...

杰子的世界 4931

人工智能-CS188 Project 2: Multi-agents

一、项目介绍 项目介绍网页 项目代码下载 本项目是采用Berkeley的CS188课程内容实习二的内容,在这个项目中,我们将为经典版本的Pacman 设计自动算法,包括幽灵。在此过程中,我们将实现 minimax 和 expectimax 搜索并尝试评估函数设计 完成作业只需要完成5个题目,按照项目介绍的步骤进行完成,主要是在multiAgents.py文件中进行补充代码 二、代码详情 1、Question1:Reflex Agent 略 2、Question2:Minimax 套用ppt上的minm

xiten的博客 8285

用逐飞STC32G库做个智能小车:编码器测速、PWM调电机、ADC读电池电压(完整项目)

本文详细介绍了如何使用逐飞科技的STC32G12K128开源库构建智能小车项目,涵盖编码器测速、PWM电机控制和电池电压监测等核心功能。通过硬件选型、开发环境搭建、代码实现及调试技巧的全流程讲解,帮助开发者快速掌握基于STC32G的嵌入式系统开发,实现高性能的智能小车控制。

weixin_42526417的博客 194

java 再谈clone

1,重写Object的克隆方法2,进行强制类型转换因为返回值是Object所以要进行强转3,处理异常抛出4,实现cloneable接口。

Harrybili的博客 399

CamoFox MCP:让AI助手隐身操作浏览器的反检测自动化实战

浏览器自动化是提升工作效率和实现数据采集的关键技术,其核心原理在于通过程序脚本模拟人类在网页上的交互行为。传统方案如Selenium或Playwright虽功能强大,但需要开发者编写复杂脚本并处理反爬机制。随着AI Agent技术的发展,自然语言驱动的自动化成为新趋势,它能将任务规划与逻辑判断交由AI处理,大幅降低使用门槛。Model Context Protocol(MCP)作为连接AI与外部工具的标准协议,在此场景下价值凸显,它使得AI助手能直接调用丰富的浏览器操作工具。CamoFox MCP创新性地将

weixin_42551967的博客 727

Java 为什么会有clone方法

clone()方法的存在是为了提供一种对象拷贝的机制,适用于需要快速复制对象状态的场景。然而,由于其默认实现是浅拷贝,且需要实现Cloneable接口,它在实际开发中存在一些局限性。因此,建议根据具体需求选择clone()方法或其他替代方案(如拷贝构造函数或静态工厂方法)。

专注于技术分享 1235

12-RK平台U-Boot启动流程

先看概述,把这一章要回答的问题摆出来,带着问题听。RK 特有的 BootROM -> MiniLoader -> SPL -> U-Boot -> Kernel。这是因为 RK 平台使用闭源的 DDR 初始化固件,需要通过 MiniLoader 来加载和运行。为什么多一层?这是 RK 平台的特殊性决定的。RK 平台使用闭源的 DDR 初始化固件,这段代码 Rockchip 不开源,只能以二进制形式提供,它需要一个载体来加载和运行,这个载体就是 MiniLoader。

内核笔记 1147

医学图像的对抗攻击:模型安全性与鲁棒性分析

医学图像的对抗攻击:模型安全性与鲁棒性分析 ,人工智能,计算机视觉,大模型,AI,本文围绕医学图像的对抗攻击展开,分析了其对AI模型的威胁。介绍了对抗样本定义、攻击原理,以及FGSM、BIM、PGD等常见攻击方法,还给出了相关代码示例。阐述了攻击对模型诊断准确性和可信度的影响,提出对抗训练、输入预处理、模型集成等提升模型安全性与鲁棒性的方法,探讨了评估指标、数据集和流程,分析了实际应用中的挑战与应对策略,最后展望了未来发展趋势。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 18万+

clone方法是如何工作的

clone()是java.lang.Object类下面的一个很难处理的方法,clone()的作用很简单,提供一种克隆机制创建对象的副本,对于如何实现它已成为一个棘手的事,同时还长期被广受批评。不管怎样,我们不去争论历史,现在我们将尝试学习clone方法是怎样工作的。说实在的,想理解克隆机制并不简单,甚至有经验的java程序员也很难解释可变对象的克隆是如何运作的、深克隆(deep copy)与浅克隆

francisshi的专栏 1035

[RK3568 Android11] 教程之原厂SDK源码适配AIO-3568J板子跑起来

目录 一、前提 二、修改dts设备树 三、适配板子的dts 四、编译系统烧入固件验证 一、前提 因源码是直接使用原厂的SDK,没有使用firefly配套的SDK源码,所以手上这块firefly aio-3568j板子在硬件设计上与原厂使用的板子会有些差异;就是因为这些差异会导致新固件烧入后,debug串口打印许多错误信息,可能的话,系统还会崩溃掉,跑不起来; 主要差异在哪里呢?比如: ● DDR类型和品牌多样性; ...

~未来可期~ 1744

浅析java中clone()方法

java中我们可能都遇到过这样的情况,在我们将一个对象做为参数传给一个函数的时候,我们希望在这个函数中所做的操做,并不会影响到这个对象本身。但是在java传递都是引用,所以往往我们在函数内部改变了对象的某一个值,在函数外面调用该对象的时候,相应的值也同样被改变了,例如下面的程序: class Test { static void myMethod(Point pt1)

孟祥月的专栏 1万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Java — clone()方法

Java中clone方法的使用 1. 什么是clone   在实际编程过程中,我们常常要遇到这种情况:有一个对象object1,在某一时刻object1中已经包含了一些有效值,此时可能会需要一个和object1完全相同新对象object2,并且此后对object2任何改动都不会影响到object1中的值。也就是说,object1与object2是两个独立的对象,但object2的初始值是由obje...

weixin_37692115的博客 751

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

关于Object类的clone()方法

clone()方法是用于浅克隆或者深克隆一个java对象的,但是要注意一个误区:clone方法是Object类的,并不是Cloneable接口的,Cloneable只是一个标记接口,标记接口是用于标记实现该接口的类具有某种该接口标记的功能,常见的标记接口有三个:Serializable、Cloneable、RandomAccess,没有实现Cloneable接口,那么调用clone方法就会爆出CloneNotSupportedException异常。 要使得一个java类可以实现克隆,那么该类就需要实现Cl

can_chen的博客 1889

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Java中的clone方法

分配完内存之后,再调用构造函数,填充对象的各个域,这一步叫做对象的初始化,构造方法返回后,一个对象创建完毕,可以把他的引用(地址)发布到外部,在外部就可以使用这个引用操纵这个对象(当然,由于指令的重排序,发布对象可能在构造函数返回之前,详细看。都是分配内存,调用clone方法时,分配的内存和源对象(即调用clone方法的对象)相同,然后再使用源对象中对应的各个域,填充新对象的域, 填充完成之后,clone方法返回,一个新的相同的对象被创建,同样可以把这个新对象的引用发布到外部。

zzdnb的博客 1461

详解Java中clone方法的使用

通过上述步骤,我们可以在Java中正确地使用clone()方法来实现对象的克隆,并根据需要选择浅克隆或深克隆,以确保新对象与原对象之间的独立性和数据一致性。在Java中,对象的拷贝是一个常见的概念,它涉及到对象在内存中的复制和引用。深拷贝和浅拷贝是两种不同的拷贝方式,它们在对象复制时的行为和结果有所不同。深拷贝也会创建一个新对象,但与浅拷贝不同的是,深拷贝会将原对象的所有成员变量都复制一份,包括引用类型的成员变量所指向的对象。这样,新对象和原对象在内存上是完全独立的,对新对象的修改不会影响原对象。

Xxdvdjdjdd_的博客 1555

java中的clone方法

java中的clone方法、深拷贝与浅拷贝、native方法

weixin_44627672的博客 4572

Java中clone()方法的作用

Java在处理基本数据类型(例如int、char、double等)时,都是采用值传递(传递的是输入参数的副本)的方式执行,除此之外的其它类型(对象啊,String类型等)都是按引用传递(传递的是对象的一个引用)的方式执行。对象除了在函数调用时是引用传递,在使用“=”也是采用引用传递。 class Obj { private int i = 0; public int getI() { ...

Evan's Blog ٩(๑❛ᴗ❛๑)۶ 1888

java的clone方法_Java clone方法详解及简单实例

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

weixin_31889705的博客 847

VB中Recordset的clone方法

在用vb的时候,发现了个奇怪的问题,见下面代码,在生成Recordset的过程中,调用了recordset的clone方法,clone后沒有做任何操作,及時跟踪的过程中发现clone前的原recordset對象rectemp的recordcount是26,但是但调用Recordset的clone方法后,居然发现clone后新的複製本rectempcopy 比rectemp多了一倍的记录。...

bahua2018的博客 1044

java里的clone方法,super.clone()到底调用的是谁??

<br /><br />如下java代码里的l=(Location)super.clone();<br />这行代码可以正确执行你想要的方法,问题是,这个super是谁呢?<br />返回super.toString()竟然是Location。<br />不是应该继承自Object的吗?super为什么不是Object?<br />还有,这个clone方法到底是怎么工作的呢?<br />望老师同学帮忙解答!!java代码<br />/**<br />* 测试自定义clone()方法<br />* @auth

legendmoheNote的专栏 4493

java clone方法_Java Date clone()方法与示例

java clone方法 日期类clone()方法 (Date Class clone() method) clone() method is available in java.util package. clone()方法在java.util包中可用。 clone() method is used to returns a copy or clone of this Date object o...

cumt30111的博客 1314

java clone方法_Java Calendar clone()方法与示例

java clone方法 日历类clone()方法 (Calendar Class clone() method) clone() method is available in java.util package. clone()方法在java.util包中可用。 clone() method is used to return the cloned object of this Calendar...

cumtb2002的博客 1381

Clone使用方法详解

java“指针”       Java语言的一个优点就是取消了指针的概念,但也导致了许多程序员在编程中常常忽略了对象与引用的区别,本文会试图澄清这一概念。并且由于Java不能通过简单的赋值来解决对象复制的问题,在开发过程中,也常常要要应用clone()方法来复制对象。本文会让你了解什么是影子clone与深度 clone,认识它们的区别、优点及缺点。          看到这个标题,是不是有点困

hjf19790118的专栏 1225
上一篇: ResourceBundle [XX] not found for MessageSource的解决方法
下一篇: 破解2000,XP,2003server的密码
cddcdd2
博客等级 码龄18年 3粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值