java对象clone

news2024/11/26 8:31:01

Object提供了colne方法给我们定义的类,用来进行对象克隆,但是这个clone方法是protected的,所以需要在我们需要使用clone的类中重写Object的clone方法,并且需要实现Cloneable接口,Cloneable接口是一个标记接口,可以理解为是一种规则,实现了Cloneable接口就相当于有了克隆的能力,实际上Cloneable接口里什么都没有,如果不去实现这个接口,虚拟机就不认为你这个类有克隆的能力,使用clone就会报错。
完成这些在调用类的clone函数时,ide还会抛出异常,提醒你clone可能会写错,将这个异常抛出即可:
请添加图片描述

以上只是一个浅克隆,浅克隆拷贝出的新对象,与原对象中的数据一模一样(引用类型拷贝的只是地址)。所有在在上面的拷贝之后,新对象中的分数成员变量直接将地址赋值过来了:
请添加图片描述
请添加图片描述


PS:因为字符串是不可变的,所以当修改String对象时,实际上是创建了一个新的String对象,而不是修改原始String对象的值。因此,即使拷贝对象和原始对象引用的是同一个String实例,对String值的修改只会影响到修改所属的对象。


深克隆是:1.对象中基本类型的数据直接拷贝;2.对象中的字符串数据拷贝的还是地址,这个比较特殊,因为字符串是不可变的;3.对象中还包含的其他对象,不会拷贝地址,会创造新对象。
针对上面的情况,想要进行深拷贝,就要对scores单独再拷贝一次:
请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/720650.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

「JVS低代码开发平台2.1.8版本」-首页功能介绍

JVS是面向软件开发团队可以快速实现应用的基础开发脚手架,主要定位于企业信息化通用底座,采用微服务分布式框架,提供丰富的基础功能,集成众多业务引擎,它灵活性强,界面化配置对开发者友好,底层容…

【Java】Netty中ByteBuf学习笔记

文章目录 1) ByteBuf创建与自动扩容2)直接内存 vs 堆内存3)池化 vs 非池化4)组成5)写入6)扩容7)读取8)retain & release9)slice10)duplicate11)copy12&am…

给LLM装上知识:从LangChain+LLM的本地知识库问答到LLM与知识图谱的结合

第一部分 基于LangChain ChatGLM-6B的本地知识库问答的应用实现 1.1 什么是LangChain:连接本地知识库与LLM的桥梁 作为一个 LLM 应用框架,LangChain 支持调用多种不同模型,提供相对统一、便捷的操作接口,让模型即插即用&#x…

java并发编程 6:java内存模型与volatile(重点)

目录 硬件内存模型Java 内存模型主内存工作内存内存交互的八个原子操作JMM作用 可见性退不出的循环volatile解决同步模式之 Balking 有序性指令重排解决指令重排 volatile 原理volatile如何保证可见性volatile如何保证有序性volatile 不能解决指令交错double-checked locking 问…

2023/7/5总结

JS BOM 是浏览器对象模型 window对象是一个全局对象,也是JavaScript的顶级对象 所以通过var定义在全局作用域中的变量、函数都会变成window对象的属性和方法 定时器-延时函数 setTimeout(回调函数,等待的毫秒数) 延时函数只会执行一次 清除延时函…

Java基础---String的长度限制

目录 典型回答 常量池限制 运行期限制 典型回答 String有长度限制,编译期和运行期不一样编译期需要用 CONSTANT_Utf8_info 结构用于表示字符串常量的值,而这个结构是有长度限制,他的限制是65535运行期,String的length参数是Int…

Jenkins 配置用户角色和权限

1、配置条件: 1)已安装Jenkins,当前案例使用版本:2.319.3 2)已成功进入Jenkins,并新建用户:dev_java 2、安装插件【系统管理-插件管理-搜索-可选插件】:Role-based Authoriz…

JavaScript 进阶 - 第4天

JavaScript 进阶 - 第4天笔记 文章目录 JavaScript 进阶 - 第4天笔记1 深浅拷贝1.1 浅拷贝1.2 深拷贝(面试)1.2.1 递归实现深拷贝1.2.2 js库lodash里面cloneDeep内部实现了深拷贝1.2.3 JSON序列化 2 异常处理2.1 throw 抛异常2.2 try ... catch 捕获异常…

Linux之Kafka保姆式详细安装教程

下载Kafka 《Kafka官网下载》 注意:下载的是二进制文件,不要下载源码!这里可以采用第三方下载工具加速下载,如:迅雷等 上传到Linux服务器的/data/目录下进行解压 tar -zxvf是解压文件命令,-C表示把解压…

【C++学习笔记】1.6 引用

目录 🍯1.6 引用 🥝1. 引用的概念 🥝2. 引用的特性 1、引用在定义时必须初始化 2、一个变量可以有多个引用 3、引用一旦引用一个实体,再不能引用其他实体 🥝3. 常引用 1、取别名的原则:对原引用的…

数据查询大揭秘:收好几个模式化公式

欢迎来到数据查询大揭秘!今天,我将与大家分享一些宝贵的秘诀和技巧,让你轻松应对数据查询的挑战。准备好了吗?收起你的笔记本和便签纸,因为我即将为你介绍几个模式化公式,让你事半功倍地完成数据查询任务&a…

湖北文理学院工程能力实训开班!

为深化校企合作,产教融合助力新工科建设,提升学生工程实践能力,电巢工程能力实训班按照不同岗位类别,匹配对应的企业岗位任职能力要求对学生开展分级培养,以产业需求为导向,培养创新型、应用型人才。 7月3…

open3D cmake+win10+vs2019编译

已经采用python版open3D实现和验证了功能,但是在C迁移上却遇到了不少问题: 1、可能是与本地的编译器存在差异,在使用open3D git上的winows版本时,存在地址访问冲突和std::bad_alloc等问题。前者在适用IO读写时必现,后者…

【Git】Windows如何运行.sh脚本文件

在Windows系统中运行.sh脚本需要借助第三方工具,比如Git Bash、Cygwin或WSL(Windows Subsystem for Linux)等。 以下是使用Git Bash运行.sh脚本的步骤: 安装Git Bash:从Git官方网站(https://git-scm.com/…

【Ubuntu学习MySQL——MySQL基本操作命令】

1.创建数据库 2.删除数据库 3.选择数据库 4. 创建数据表 5.删除数据表 6.往数据表中插入数据 7.从数据表中查询数据 SELECT column_name,column_name FROM table_name [WHERE Clause] [LIMIT N][ OFFSET M]""" 查询语句中你可以使用一个或者多个表&#xff0c…

SpringMVC源码-DispatcherServlet

一、SpringMVC请求处理流程 DispatcherServlet:DispatcherServlet是SpringMVC中的前端控制器,负责接收request并将request转发给对应的处理组件。HandlerMapping:HanlerMapping是SpringMVC中完成url到Controller映射的组件。Handler&#xff…

智能汽车时代,产业如何“软硬兼施”

摘要: 智能汽车时代,以车用芯片、基础软件为代表的卡脖子关键技术,牵动着国内整个汽车供应链的安全。“软硬兼施”正成为从企业到汽车全行业的共同重大行动。 汽车产业链、供应链安全问题近两年已经引起全行业前所未有的关注。进入智能汽车时…

互联网医院资质申请难吗|互联网医院+医药机构

互联网医院牌照申请的具体流程可能因国家和地区的法规和政策而有所不同。下面是一个一般性的流程介绍:   准备材料:根据当地的法规和政策要求,准备申请互联网医院牌照所需要的相关材料。这些材料可能包括但不限于:公司注册证明、…

【已解决】cc1plus: fatal error: cuda_runtime.h: No such file or directory

文章目录 前因解决方案后果 前因 我是在conda环境下创建stable diffusion的虚拟环境,虚拟环境下pytorch、cuda和cudnn的版本如下所示。服务器上的CUDA版本是11.2,GPU是P40,内存22G。 import torch >>> torch.__version__ 1.12.0 &…

JavaEE语法第二章之多线程(初阶四)

一、wait 和 notify 由于线程之间是抢占式执行的, 因此线程之间执行的先后顺序难以预知.但是实际开发中有时候我们希望合理的协调多个线程之间的执行先后顺序. 球场上的每个运动员都是独立的 "执行流" , 可以认为是一个 "线程". 而完成一个具体的进攻得分…