当前位置: 首页 > news >正文

java —— 克隆对象、枚举

一、克隆对象

(一)在基本数据类型中,直接将对象 A 的值赋给对象 B,当更改对象 B 的时候,对象 A 的值保持不变。例如:

public static void main(String[] args)
{int a=5;int b=a;                      //将a的值赋给bb=6;                          //更改b的值System.out.println(b);        //b的值为6System.out.println(a);        //a的值仍然为5
}

(二)但是在对象引用的情况中,直接将对象 A 的值赋给对象 B,当更改对象 B 的时候,对象 A 的值也会随之改变。例如:

public class Student
{String name;	public Student(String name) {	this.name = name;                  //构造方法}public String getName() {return name;                       //get方法}public void setName(String name){this.name = name;                  //set方法}public static void main(String[] args){Student st1=new Student("Tom");Student st2=st1;st2.setName("Jerry");System.out.println(st2.getName());     //st2的name变为jerrySystem.out.println(st1.getName());	   //st1的name随之变为jerry}
}

在本案例中,由于 Student 类不是基本类型,当把 st1 赋给 st2 的时候,st1 和 st2 实际指向同一个对象 Tom,此时不论更改 st1 还是 st2 中的任何一个,另一个都会随之更改。

(三)如果在对象引用的过程中,要实现更改 B 的时候,A 的值不随之改变,就要通过克隆。

方法:

① 该对象的类要实现 cloneable 接口;

② 在该对象的类中对父类 Object 的 clone() 方法进行重写。

public class Student implements Cloneable
{String name;	public Student(String name) {	this.name = name;                  //构造方法}public String getName() {return name;                       //get方法}public void setName(String name){this.name = name;                  //set方法}public Student clone() throws CloneNotSupportedException{Student stu=(Student)super.clone();         //重写父类的clone()方法return stu;}public static void main(String[] args){Student st1=new Student("Tom");Student st2=st1.clone();st2.setName("Jerry");System.out.println(st2.getName());     //st2的name变为jerrySystem.out.println(st1.getName());	   //st1的name仍为tom}
}

在本案例中,使用 st2=st1.clone(),实质上等于 st1 和 st2 指向两个 Tom,此时不论更改其中任何一个,都不会影响另一个的值。

二、枚举

枚举实际上就是提前实例化好的对象,外部可以直接调用。并且枚举不支持在外部进行实例化创建,也就是说只有枚举的那几个常量。

public enum Week
{Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday;public void run(){switch (this) {case Monday:case Tuesday:case Wednesday:case Thursday:case Friday:System.out.println("go to work");break;case Saturday:case Sunday:System.out.println("have a break");break;}}
}public class TT
{public static void main(String[] args){Week.Monday.run();Week.Sunday.run();}
}

相关文章:

java —— 克隆对象、枚举

一、克隆对象 (一)在基本数据类型中,直接将对象 A 的值赋给对象 B,当更改对象 B 的时候,对象 A 的值保持不变。例如: public static void main(String[] args) {int a5;int ba; //将…...

STM32-GPIO八种输入输出模式

图片取自 江协科技 STM32入门教程-2023版 细致讲解 中文字幕 p5 【STM32入门教程-2023版 细致讲解 中文字幕】 https://www.bilibili.com/video/BV1th411z7sn/?p5&share_sourcecopy_web&vd_source327265f5c70f26411a53a9226af0b35c 目录 ​编辑 一.STM32的四种输…...

windows镜像虚拟机创建共享文件夹详细步骤 -- 和本地电脑传输文件

第一步:关闭客户机 第二步:右击“虚拟机名称”或菜单栏的“虚拟机”–>“设置” 网络适配器选择NAT或者其他的都可以 来到“选项”,启用共享文件夹,具体如下图:点击添加,添加主机文件夹。然后确定 第三步…...

通关!游戏设计之道Day18

过场动画,或者说根本没人看的东西 过场动画是一系列的动画或实时的动作序列,用来推进剧情制造大场面,烘托气氛,展示对话和角色成长,以及显现在某些情况下被玩家忽略的相关线索。 过场动画是一把双刃剑,一方…...

写Python时不用import,你会遭遇什么

from *** import *** 想必你已经再熟悉不过这样的python语法。 当你的 python 代码需要获取外部的一些功能(一些已经造好的轮子),你就需要使用到 import 这个声明关键字。import可以协助导入其他 module 。(类似 C 预约的 inclu…...

java网络:过滤器修改请求头

目录 一、gateway的全局过滤器 二、web的OncePerRequestFilter以及常见过滤器Filter 三、过滤器排序 一、gateway的全局过滤器 Component Slf4j public class GatewayAuthFilter implements GlobalFilter, Ordered {Overridepublic Mono<Void> filter(ServerWebExchan…...

yolov10 快速使用及训练

参考: https://docs.ultralytics.com/models/yolov10/ ultralytics其实大多数系列都能加载使用: 官方: https://github.com/THU-MIG/yolov10.git 代码参考: https://colab.research.google.com/github/roboflow-ai/notebooks/blob/main/notebooks/train-yolov10-object-…...

CSS变量 -- var() 使用教程

目录 1 CSS变量的基本使用1.1 变量定义1.1 变量使用1.3 全局/局部变量 2 CSS变量的参数3 CSS变量的拼接和计算3.1 拼接3.2 计算 4 JS 修改 CSS变量 CSS 自定义属性&#xff08;有时候也被称作CSS 变量或者级联变量&#xff09;&#xff0c;它的值可以在整个文档中重复使用。 复…...

python基础-数据结构-leetcode刷题必看-queue---队列-python的底层构建

文章目录 队列双端队列 deque底层存储deque接口1. __init__(self, iterable: Iterable[_T], maxlen: int | None None) -> None2. append(self, __x: _T) -> None3. appendleft(self, __x: _T) -> None4. copy(self) -> Self5. count(self, __x: _T) -> int6. …...

深入理解Spring Security:保护你的Web应用程序

深入理解Spring Security:保护你的Web应用程序 这听起来像是一部詹姆斯邦德电影,邦德试图进入坏家伙的藏身之处。坏家伙设置了一系列超级安全措施,有多层次的安全防御。邦德克服了其中一层,进入了隐藏处,但又遇到了下一个陷阱。他战胜了一个又一个陷阱,最终克服了所有障…...

【车载开发系列】Vector工具链的安装

【车载开发系列】Vector工具链的安装 【车载开发系列】Vector工具链的安装 【车载开发系列】Vector工具链的安装一. VectorDriver二. DaVinci_Developer三. DaVinci Configurator 一. VectorDriver Vector Driver Setup是Vector产品链中重要的驱动软件,所有的硬件设备进行连接…...

Windows系统部署YOLOv5 v6.1版本的训练与推理环境保姆级教程

文章目录 一 概述二 依赖环境(prerequisites)2.1 硬件环境2.2 软件环境 三 环境安装3.1 创建并激活虚拟环境3.2 安装Pytorch与torchvision3.3 校验Pytorch安装3.4 下载 YOLOv5 v6.1 源码3.5 安装 YOLOv5 依赖3.6 下载预训练模型3.7 安装其他依赖3.8 测试环境安装3.9 测试训练流…...

[RK3588-Android12] 关于EDP屏外设为Panel,不支持HPD的配置

问题描述 直接附上dts配置&#xff0c;也可自行查看先关文档RKDocs\common\display\Rockchip_RK3588_User_Guide_eDP_CN.pdf 解决方案&#xff1a; // EDP屏参数panel-edp {compatible "simple-panel";// 屏en脚 自行根据原理图配置enable-gpios <&gpioX R…...

142.栈和队列:用栈实现队列(力扣)

题目描述 代码解决 class MyQueue { public:stack<int> stIn; // 输入栈&#xff0c;用于push操作stack<int> stOut; // 输出栈&#xff0c;用于pop和peek操作MyQueue() {}void push(int x) {stIn.push(x); // 将元素压入输入栈}int pop() {// 如果输出栈为空&…...

乡村振兴的乡村产业创新发展:培育乡村新兴产业,打造乡村产业新名片,促进乡村经济多元化发展

目录 一、引言 二、乡村产业创新发展的必要性 &#xff08;一&#xff09;适应新时代发展要求 &#xff08;二&#xff09;满足消费升级需求 &#xff08;三&#xff09;促进农民增收致富 三、培育乡村新兴产业策略 &#xff08;一&#xff09;加强科技创新引领 &#…...

数据库|基于T-SQL创建数据库

哈喽&#xff0c;你好啊&#xff0c;我是雷工&#xff01; SQL Server用于操作数据库的编程语言为Transaction-SQL,简称T-SQL。 本节学习基于T-SQL创建数据库。以下为学习笔记。 01 打开新建查询 首先连接上数据库&#xff0c;点击【新建查询】打开新建查询窗口&#xff0c; …...

智能家居ZigBee网关选型定制指南:主控,操作系统,天线设计,助力IoT开发者

随着科技的发展和人们生活水平的提高&#xff0c;智能家居以其便捷、舒适、安全等特点&#xff0c;逐渐走进千家万户&#xff0c;成为家装消费品换新升级的重要方向。在智能家居系统中&#xff0c;网关扮演着中枢控制器的角色&#xff0c;负责将各种设备连接到互联网上&#xf…...

QT截图程序,可多屏幕截图二,增加调整截图区域功能

上一篇QT截图程序&#xff0c;可多屏幕截图只是实现了最基本的截图功能&#xff0c;虽然能用但是缺点也有&#xff0c;没办法更改选中的区域&#xff0c;这在实际使用时不太方便。这篇增加了这个功能。先看看效果。 实现代码为&#xff1a; 头文件 #ifndef MASKWIDGET_H #de…...

开源浪潮与闭源堡垒:大模型未来的双重奏

从数据隐私、商业应用和社区参与等方面来看&#xff0c;开源大模型和闭源大模型各有优劣势。开源模型在透明度、社区协作和成本效益方面具有优势&#xff0c;而闭源模型在安全性、合规性和商业竞争力方面表现出色。因此&#xff0c;我更倾向于认为&#xff0c;未来的大模型发展…...

postman教程-6-发送delete请求

领取资料&#xff0c;咨询答疑&#xff0c;请➕wei: June__Go 上一小节我们学习了postman发送put请求的方法&#xff0c;本小节我们讲解一下postman发送delete请求的方法。 HTTP DELETE 请求是一种用于删除指定资源的请求方法。在RESTful API 设计中&#xff0c;DELETE 请求…...

AOP 失效的 7 种死法与复活指南

还是那句话&#xff0c;知识是一个返回的过程&#xff0c;追一句&#xff1a;时间出真知今天我们要聊的是一个“灵异事件”频发的领域——Spring AOP 失效。你是不是也经历过这种崩溃&#xff1a;“明明加了 Transactional&#xff0c;为什么数据库报错不回滚&#xff1f;” “…...

ConvNeXt 改进 :ConvNeXt添加SAConv(可切换空洞卷积),自适应融合多尺度特征,优化小目标与遮挡目标感知,二次创新CNBlock结构

本文教的是方法,也给出几种改进方法,二次创新结构,百变不离其宗,一文带你改进自己模型,科研路上少走弯路。 作者提出的技术结合了递归特征金字塔和可切换空洞卷积,通过强化多尺度特征学习和自适应的空洞卷积,显著提升了目标检测的效果。 理论介绍 空洞卷积(Atrous Co…...

QGIS 3.28 保姆级配置指南:从中文界面到高德底图,手把手搞定智驾地图工作流

QGIS 3.28 智能驾驶地图工程师开箱指南&#xff1a;从零构建高精度工作流 刚拿到工牌的智能驾驶地图工程师小李&#xff0c;面对全新的QGIS界面有些手足无措。作为空间数据处理的核心工具&#xff0c;QGIS的配置直接决定了后续高精地图生产的效率与精度。本文将带你完成从软件…...

Unity引擎开发过的VR大场景项目网络技术,资源处理及热更新方案的报价大概多少

根据最新的市场招标数据、行业报价案例和技术方案分析&#xff0c;针对VR大场景项目的网络技术、资源处理、热更新方案三大模块的报价&#xff0c;整理如下&#xff1a;一、网络技术方案报价 网络技术方案主要解决多人在线同步、远程渲染、低延迟通信等问题。方案类型技术选型报…...

一文读懂大模型,彻底告别 AI 焦虑 | 零门槛

今天&#xff0c;不聊复杂代码、不晒专业论文&#xff0c;用最直白的语言&#xff0c;带非技术背景的你彻底读懂大模型&#xff1a;核心逻辑、实用场景、产品选型&#xff0c;以及普通人应对AI浪潮的正确姿势。全文干货密集&#xff0c;建议收藏转发&#xff0c;读完摆脱AI焦虑…...

Hutool CronUtil实战:5分钟搞定Spring Boot定时任务(含动态任务配置)

Hutool CronUtil实战&#xff1a;5分钟搞定Spring Boot定时任务&#xff08;含动态任务配置&#xff09; 在Java开发领域&#xff0c;定时任务几乎是每个项目都绕不开的基础需求。传统方案如Spring Scheduler虽然简单易用&#xff0c;但在动态任务管理和细粒度控制方面往往力不…...

白城腾讯广告服务商

在白城&#xff0c;有不少企业想借助腾讯广告拓展业务&#xff0c;这就离不开靠谱的腾讯广告服务商。今天就和大家聊聊白城腾讯广告服务商的那些事儿&#xff0c;长春中网互联技术在这一领域表现就相当不错。白城腾讯广告服务商现状行业报告显示&#xff0c;近几年白城地区对腾…...

从Python转C++必看:C++20的starts_with/ends_with和Python有何不同?5个易错点详解

从Python转C必看&#xff1a;C20的starts_with/ends_with和Python有何不同&#xff1f;5个易错点详解 当你在Python中熟练使用startswith()和endswith()多年后&#xff0c;突然切换到C20的starts_with和ends_with&#xff0c;可能会觉得"这不就是换个语法吗&#xff1f;&q…...

别再只会用PS修图了!用Python的Richardson-Lucy算法,5分钟搞定模糊老照片修复

用Python拯救模糊老照片&#xff1a;零基础也能上手的Richardson-Lucy算法实战 翻箱倒柜找到一张泛黄的老照片&#xff0c;却发现画面模糊得连人脸都看不清&#xff1f;别急着叹气&#xff0c;更不用花大价钱找专业修图师。今天我要分享一个连Python新手都能轻松上手的黑科技—…...

从南邮实验报告看数据结构:顺序表、链表、二叉树、图,这些实验到底在练什么?

解码数据结构实验&#xff1a;从顺序表到图算法的编程思维进阶之路 当你第一次翻开数据结构实验手册&#xff0c;看到那些关于顺序表、链表、二叉树和图算法的题目时&#xff0c;是否曾困惑过这些看似枯燥的操作练习究竟能带来什么实际价值&#xff1f;南邮的这一系列实验设计绝…...