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

Java中枚举类的使用详解

Java中枚举类的使用详解

在Java编程中,枚举(Enum)是一种特殊的类,用于表示固定数量的常量。与常量相比,枚举类型具有类型安全、可读性强和易于管理的优点。下面我们将详细讲解Java中枚举类的使用,并通过示例代码帮助初学者理解。

一、为什么使用枚举?

在编程中,我们经常会遇到一些固定的、预定义的值集合,比如一周的七天、一年的四个季节等。这些值在程序中不会改变,且数量有限。使用枚举类型来表示这些值,可以使代码更加清晰、易读,并减少出错的可能性。

二、如何定义枚举?

在Java中,使用enum关键字来定义枚举类型。枚举类型的定义方式与类相似,但枚举类型中的元素(也称为枚举常量)都是该类型的实例。

下面是一个简单的示例,定义了一个表示一周七天的枚举类型:

// 定义一个名为Weekday的枚举类型
public enum Weekday {MONDAY, // 枚举常量MONDAYTUESDAY, // 枚举常量TUESDAYWEDNESDAY, // 枚举常量WEDNESDAYTHURSDAY, // 枚举常量THURSDAYFRIDAY, // 枚举常量FRIDAYSATURDAY, // 枚举常量SATURDAYSUNDAY; // 枚举常量SUNDAY// 可以在枚举类型中定义方法public String getFullName() {switch (this) {case MONDAY: return "Monday";case TUESDAY: return "Tuesday";case WEDNESDAY: return "Wednesday";case THURSDAY: return "Thursday";case FRIDAY: return "Friday";case SATURDAY: return "Saturday";case SUNDAY: return "Sunday";default: throw new IllegalStateException("Unexpected value: " + this);}}
}

三、如何使用枚举?

  1. 引用枚举常量

可以直接通过枚举类型名引用枚举常量,例如:

Weekday day = Weekday.MONDAY;
System.out.println(day); // 输出:MONDAY
  1. 使用枚举类型的方法

如果枚举类型中定义了方法,可以直接通过枚举常量来调用该方法,例如:

String fullName = Weekday.MONDAY.getFullName();
System.out.println(fullName); // 输出:Monday
  1. 在switch语句中使用枚举

枚举类型非常适合在switch语句中使用,因为枚举常量是固定的、预定义的。下面是一个示例:

Weekday day = Weekday.WEDNESDAY;
switch (day) {case MONDAY:System.out.println("It's Monday!");break;case WEDNESDAY:System.out.println("It's Wednesday!");break;// 其他情况的处理...default:System.out.println("It's some other day.");
}
// 输出:It's Wednesday!

四、枚举的高级用法

除了上述基本用法外,Java的枚举还支持一些高级特性,如构造函数、实例字段、实例方法、抽象方法等。这些特性使得枚举类型更加灵活和强大。下面是一个使用构造函数和实例字段的示例:

public enum Color {RED("FF0000"),GREEN("00FF00"),BLUE("0000FF");// 私有实例字段private final String hexCode;// 私有构造函数Color(String hexCode) {this.hexCode = hexCode;}// 公共方法获取十六进制代码public String getHexCode() {return hexCode;}
}// 使用示例
Color red = Color.RED;
System.out.println(red.getHexCode()); // 输出:FF0000

五、总结

通过本文的讲解和示例代码,相信初学者已经对Java中的枚举类型有了更深入的理解。枚举类型是一种强大的工具,可以帮助我们更好地表示和管理固定数量的常量。在编写代码时,合理使用枚举类型可以使代码更加清晰、易读和易于维护。

相关文章:

Java中枚举类的使用详解

Java中枚举类的使用详解 在Java编程中,枚举(Enum)是一种特殊的类,用于表示固定数量的常量。与常量相比,枚举类型具有类型安全、可读性强和易于管理的优点。下面我们将详细讲解Java中枚举类的使用,并通过示…...

C++11 设计模式6. 建造者模式,也叫做生成器模式

一 什么是建造者模式? // 小木公司对于SQL有配置,因此要输入sql url,然后输入 sql username,然后是 sql ps //因此小木就想到了使用 SystemConfig这个类来完成上述的三个初始化 //5.1号小木公司加入了redis的缓存机制&#xff0…...

GPS与精致农业 无人机应用 农业遥感 农业类

全球定位系统是美国国防部主要为满足军事部门对海上、陆地和空中设施进行高精度导航和定位的要求而建立的。GPS系统最基本的特点是以“多星、高轨、高频、测量-测距”为体制,以高精度的原子钟为核心。GPS作为新一代卫星导航与定位系统,不仅具有全球性、全…...

Kotlin注解简介

Kotlin注解 注解(Annotations)在 Kotlin 中和在 Java 中有类似的地位,它们都是元数据的形式,为代码提供了额外的信息。注解不会直接影响代码的操作,但可以被编译器或者运行时环境用来生成额外的代码、进行类型检查、处…...

代码随想录训练营

Day45代码随想录 322.零钱兑换 1.题目描述 给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -…...

java中的变量、数据类型、人机交互

变量 变量要素 1、类型;每一个变量都需要定义类型(强类型)其它语言有弱类型(js) 2、变量名; 3、存储的值; 声明方式: 数据类型 变量名 变量值; public static vo…...

Python中的生成器是什么

生成器的工作原理 只要Python函数的主体中有yield关键字,该函数就是生成器函数。调用生成器函数,返回一个生成器对象。也就是说,生成器函数是生成器工厂。 下面以一个简单的函数说明生成器的行为: def gen123():yield 1yield 2yield 3print(gen123) # <function gen…...

【Camera2完整流程分析四】从log角度分析CameraService启动流程

下面直接带你通过log打印来一起读CameraService启动的过程。 1)Camera service对象构建,在启动的时候先创建CameraService 这里会打印: CameraService: CameraService started (pid=559)接着启动的时候会执行 –》onFirstRef() 进入这里面看,先输出打印: CameraService:…...

基于SSM SpringBoot vue教务排课系统

基于SSM SpringBoot vue教务排课系统 系统功能 登录 个人中心 学生信息管理 教师信息管理 课室信息管理 班级信息管理 系别信息管理 专业信息管理 课程信息管理 选课信息管理 课表信息管理 开发环境和技术 开发语言&#xff1a;Java 使用框架: SSM(Spring SpringMVC Myba…...

深入理解 LinkedList 及底层源码分析

LinkedList 是基于链表结构的一种 List&#xff0c;在分析 LinkedList 源码前我们先对对链表结构做一个简单的了解。 一、链表的概念 链表是由一系列非连续的节点组成的存储结构&#xff0c;简单分下类的话&#xff0c;链表又分为_单向链表和双向链表&#xff0c;而单向 / 双…...

美易官方:英伟达业绩将难以撑起股价?

美股市场似乎总是对各大公司的业绩表现抱有极大的期待&#xff0c;就像一个永远填不饱的“巨胃”。在这样的市场环境下&#xff0c;即使是业绩骄人的公司也可能难以支撑其股价。英伟达&#xff0c;这家在图形处理单元&#xff08;GPU&#xff09;领域享有盛誉的公司&#xff0c…...

超实用干货!FP独立站引流攻略

在当前的市场环境下&#xff0c;对于希望继续从事FP和黑五类产品销售的商家来说&#xff0c;搭建独立站绝对是一个明智的选择。没有了第三方平台的限制&#xff0c;拥有自己的独立站意味着你可以完全掌控自己的商业策略和操作。 但脱离了平台&#xff0c;独立站推广会更加困难。…...

php之框架底层中间件模式开发实现、array_reduce的应用

众所周知php框架的中间件核心是通过array_reduce实现的 php之框架中间件模式开发实现、array_reduce的应用 1.先写个测试用例看一下函数的特性2.根据执行特性实现中间件 1.先写个测试用例看一下函数的特性 <?phpfunction kernal($a,$b){return $a . " and " .…...

fabric搭建生产网络

fabric搭建生产网络 一、生成组织结构与身份证书 解包 hyperledger-fabric-linux-amd64-2.5.0.tar.gz 1.1、crypto-config.yaml配置文件 ./bin/cryptogen showtemplate > crypto-config.yaml 将crypto-config.yaml内容修改为&#xff1a; # -------------------------…...

聊聊 ASP.NET Core 中间件(二):中间件和筛选器的区别

前言 有些小伙伴看到上一篇文章后&#xff0c;可能会发现中间件和我们之前讲的筛选器非常类似&#xff0c;比如它们都是通过 next 串起来的一系列的组件&#xff0c;并且都可以在请求处理前后执行代码&#xff0c;都可以通过不执行 next 来进行请求的终止。那么筛选器和中间件…...

Nginx配置Https缺少SSL模块

1、Linux下Nginx配置https nginx下载和安装此处就忽略&#xff0c;可自行百度 1.1、配置https 打开nginx配置文件 vim /opt/app/nginx/conf/nginx.conf相关https配置 server {listen 443 ssl; #开放端口server_name echarts.net;#域名#redirect to https#ssl on; #旧版#ssl证…...

超详细——集成学习——Adaboost实现多分类——附代码

资料参考 1.【集成学习】boosting与bagging_哔哩哔哩_bilibili 集成学习——boosting与bagging 强学习器&#xff1a;效果好&#xff0c;模型复杂 弱学习器&#xff1a;效果不是很好&#xff0c;模型简单 优点 集成学习通过将多个学习器进行结合&#xff0c;常可获得比单一…...

串口通信标准RS232 RS485 RS422的区别

很多工程师经常把RS-232、RS-422、RS-485称为通讯协议&#xff0c;其实这是不对的&#xff0c;它们仅仅是关于串口通讯的一个机械和电气接口标准&#xff08;顶多是网络协议中的物理层&#xff09;&#xff0c;不是通讯协议&#xff0c;那它们又有哪些区别呢&#xff1a; 第一…...

jdk环境安装

jdk安装 创建软件安装的目录 mkdir -p /bigdata/{soft,server} /bigdata/soft 安装文件的存放目录 /bigdata/server 软件安装的目录 把安装的软件上传到/bigdata/soft 目录 解压到指定目录 -C :指定解压到指定目录 tar -zxvf /bigdata/soft/jdk-8u241-linux-x64.tar.gz -C /b…...

QT+网络调试助手+TCP服务器

一、UI界面设计 二、单线程 代码设计 1、 查找合法的本地地址&#xff0c;用于当作服务器的IP地址 #include <QThread> #include <QTcpSocket> #include <QNetworkInterface> #include <QMessageBox>QList<QHostAddress> ipAddressesList QNe…...

【unity】(1)场景

Unity的场景&#xff08;Scene&#xff09;是构建游戏中各种环境和级别的基础。一个场景可以包含游戏中的所有对象&#xff0c;如角色、道具、地形等。 创建和管理场景 创建新场景&#xff1a; 在Unity编辑器中&#xff0c;选择File > New Scene&#xff0c;或者使用快捷键…...

【Linux】进程间通信IPC机制

目录 一、无名管道 二、有名管道 三、共享内存 四、信号量 五、消息队列 六、套接字 一、无名管道 1.只能用于具有亲缘关系的进程之间的通信(也就是父子进程或者兄弟进程)。 2.是一个单工的通信模式&#xff0c;具有固定的读端和写端。 3.管道也可以看成是一种特殊的文件…...

【如此简单!数据库入门系列】之效率基石 -- 磁盘空间管理

文章目录 1 前言2 磁盘空间管理3 磁盘空间管理的实现4 存储对象关系5 总结6 系列文章 1 前言 如何将表中的记录存储在物理磁盘上呢&#xff1f; 概念模式中&#xff0c;记录&#xff08;Record&#xff09;表示表中的一行数据&#xff0c;由多个列&#xff08;字段或者属性&…...

专业渗透测试 Phpsploit-Framework(PSF)框架软件小白入门教程(五)

本系列课程&#xff0c;将重点讲解Phpsploit-Framework框架软件的基础使用&#xff01; 本文章仅提供学习&#xff0c;切勿将其用于不法手段&#xff01; 继续接上一篇文章内容&#xff0c;讲述如何进行Phpsploit-Framework软件的基础使用和二次开发。 在下面的图片中&#…...

5月7日监控二叉树+斐波那契数

968.监控二叉树 给定一个二叉树&#xff0c;我们在树的节点上安装摄像头。 节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。 计算监控树的所有节点所需的最小摄像头数量。 示例 1&#xff1a; 输入&#xff1a;[0,0,null,0,0] 输出&#xff1a;1 解释&#xff…...

C++类的设计编程示例

一、银行账户类 【问题描述】 定义银行账户BankAccount类。 私有数据成员&#xff1a;余额balance&#xff08;整型&#xff09;。 公有成员方法&#xff1a; 无参构造方法BankAccount()&#xff1a;将账户余额初始化为0&#xff1b; 带参构造方法BankAccount(int m)&#xff1…...

YOLOv5 V7.0 - rknn模型的验证 输出精度(P)、召回率(R)、mAP50、mAP50-95

1.简介 RKNN官方没有提供YOLOv5模型的验证工具&#xff0c;而YOLOv5自带的验证工具只能验证pytorch、ONNX等常见格式的模型性能&#xff0c;无法运行rknn格式。考虑到YOLOv5模型转换为rknn会有一定的精度损失&#xff0c;但是需要具体数值才能进行评估&#xff0c;所以需要一个…...

CUDA、CUDNN、Pytorch三者之间的关系

这个东西嘛&#xff0c;我一开始真的是一头雾水&#xff0c;安装起来真是麻烦死了。但是随着要复现的项目越来越多&#xff0c;我也不得不去学会他们是什么&#xff0c;以及他们之间的关系。 首先&#xff0c;一台电脑里面允许有多种版本的cuda存在&#xff0c;然后cuda分为run…...

vue-cli2,vue-cli3,vite 生产环境去掉console.log

console.log一般都是在开发环境下使用的&#xff0c;在生产环境下需要去除 &#xff0c;如果手动删除未免也太累了&#xff0c;我们可以用插件对于具体环境全局处理。 vue-cli2 项目build 下面webpack.prod.config.js 文件中: plugins: [new webpack.DefinePlugin({process.en…...

Docker-Compose编排LNMP并部署WordPress

前言 随着云计算和容器化技术的快速发展&#xff0c;使用 Docker Compose 编排 LNMP 环境已经成为快速部署 Web 应用程序的一种流行方式。LNMP 环境由 Linux、Nginx、MySQL 和 PHP 组成&#xff0c;为运行 Web 应用提供了稳定的基础。本文将介绍如何通过 Docker Compose 编排 …...

附录C:招聘流程

< 回到目录 附录C&#xff1a;招聘流程 _xxx_公司的招聘 使命 只雇佣顶级人才。 他们是能够胜任工作&#xff0c;并与 _&#xff08;你的公司名称&#xff09;_ 的企业文化相匹配的超级明星。 方法 记分卡。招聘经理创建一份文件&#xff0c;详细描述此职位的工作内容…...

1688快速获取整店铺列表 采集接口php Python

在电子商务的浪潮中&#xff0c;1688平台作为中国领先的批发交易平台&#xff0c;为广大商家提供了一个展示和销售商品的广阔舞台&#xff1b;然而&#xff0c;要在众多店铺中脱颖而出&#xff0c;快速获取商品列表并进行有效营销是关键。 竞争对手分析 价格比较&#xff1a;…...

CTF-WEB(MISC)

安全攻防知识——CTF之MISC - 知乎 CTF之MISC杂项从入门到放弃_ctf杂项 你的名字-CSDN博客 CTF MICS笔记总结_archpr 掩码攻击-CSDN博客 一、图片隐写 CTF杂项---文件类型识别、分离、合并、隐写_ctf图片分离-CSDN博客 EXIF&#xff08;Exchangeable Image File&#xff09;是…...

Ubuntu如何更换 PyTorch 版本

环境&#xff1a; Ubuntu22.04 WLS2 问题描述&#xff1a; Ubuntu如何更换 PyTorch 版本考虑安装一个为 CUDA 11.5 编译的 PyTorch 版本。如何安装旧版本 解决方案&#xff1a; 决定不升级CUDA版本&#xff0c;而是使用一个与CUDA 11.5兼容的PyTorch版本&#xff0c;您可…...

python flask css样式无效

解释&#xff1a; Flask是一个Python的轻量级Web框架&#xff0c;它没有为CSS提供任何内置的支持。如果你在Flask项目中引入了CSS文件&#xff0c;但是这个CSS没有生效&#xff0c;可能的原因有&#xff1a; 路径不正确&#xff1a;你的CSS文件没有放在正确的目录下&#xff0…...

大数据学习笔记14-Hive基础2

一、数据字段类型 数据类型 &#xff1a;LanguageManual Types - Apache Hive - Apache Software Foundation 基本数据类型 数值相关类型 整数 tinyint smallint int bigint 小数 float double decimal 精度最高 日期类型 date 日期 timestamps 日期时间 字符串类型 s…...

vue3 下载图片(包括多图片下载)

单图片下载 //使用 download(https://img1.baidu.com/it/u1493209339,2544178769&fm253&app138&sizew931&n0&fJPEG&fmtauto?sec1715101200&t854f3434686cfd2cba9d6a528597d15c)//下载逻辑 const download async (modelUrl) > {const respons…...

LabVIEW如何通过子VI更改主VI控件属性?

在LabVIEW中&#xff0c;可以通过使用Local Variable或Property Node来实现主VI控件属性的更改。这些方法可以在主VI和子VI之间传递数据和控件属性。 Local Variable: 使用Local Variable可以在子VI中直接访问并修改主VI中的控件属性。在子VI中创建Local Variable&#xff0c;并…...

关于MS-DOS时代的回忆

目录 一、MS-DOS是什么&#xff1f; 二、MS-DOS的主要功能有哪些&#xff1f; 三、MS-DOS的怎么运行的&#xff1f; 四、微软开源MS-DOS源代码 五、高手与漂亮女同学 一、MS-DOS是什么&#xff1f; MS-DOS&#xff08;Microsoft Disk Operating System&#xff09;是微软公…...

数据库索引(Mysql)

简述:数据库索引是加速数据检索,提高查询效率的一种数据结构 语法规则 创建索引 --通用语法规则 --[内容] 可选参数 --UNIQUE: 可选关键字&#xff0c;用于创建唯一索引&#xff0c;确保索引列的值是唯一的 CREATE [UNIQUE] INDEX 索引名 ON 表名(字段名,...) [ASC | DESC];…...

异常-Exception

异常介绍 基本概念 Java语言中&#xff0c;将程序执行中发生的不正常情况称为“异常”。&#xff08;开发过程中的语法错误和逻辑错误不是异常&#xff09;执行过程中所发生的异常事件可分为两大类 1&#xff0c;Error&#xff08;错误&#xff09;&#xff1a;Java虚拟机无法…...

ctfshow——SQL注入

文章目录 SQL注入基本流程普通SQL注入布尔盲注时间盲注报错注入——extractvalue()报错注入——updataxml()Sqlmap的用法 web 171——正常联合查询web 172——查看源代码、联合查询web 173——查看源代码、联合查询web 174——布尔盲注web 176web 177——过滤空格web 178——过…...

第十三章 计算机网络

这里写目录标题 1.网络设备2.协议簇2.1电子邮件(传输层)2.2地址解析(网际层)2.3DHCP(动态主动配置协议)2.4URL(统一资源定位器)2.5IP地址和子网掩码 1.网络设备 物理层&#xff1a;中继器&#xff0c;集线器(多路中继器) 数据链路层&#xff1a;网桥&#xff0c;交换机(多端口…...

商品详情 API 返回值说明

商品详情API接口在多个领域和场景中都有广泛的应用&#xff0c;以下是一些常见的应用场景&#xff1a; 竞品分析&#xff1a;企业可以利用商品详情API接口获取竞品的所有详细信息&#xff0c;如价格、发货地、上架时间、销售量等。通过分析这些竞品信息&#xff0c;企业可以更…...

层级实例化静态网格体组件:开启大量模型处理之门

前言 在数字孪生的世界里&#xff0c;我们常常需要构建大量的模型来呈现真实而丰富的场景。然而&#xff0c;当使用静态网格体 &#xff08;StaticMesh &#xff09;构建大量模型时&#xff0c;可能会遇到卡顿的问题&#xff0c;这给我们带来了不小的困扰&#x1f623;。那么&…...

【网络知识】光猫、路由器 和 交换机 的作用和区别?

数字信号&#xff1a;是指自变量是离散的、因变量也是离散的信号&#xff0c;这种信号的自变量用整数表示&#xff0c;因变量用有限数字中的一个数字来表示。在计算机中&#xff0c;数字信号的大小常用有限位的二进制数表示。 模拟信号&#xff1a;模拟信号是指用连续变化的物…...

初识Electron,创建桌面应用

历史小剧场 呜呼&#xff01;古有匈奴犯汉&#xff0c;晋室不纲&#xff0c;铁木夺宋&#xff0c;虏清入关&#xff0c;神舟陆沉二百年有余&#xff0c;中国之见灭于满清初非满人能灭之&#xff0c;能有之也因有汉奸以作虎怅&#xff0c;残同胞媚异种&#xff0c;始有吴三桂洪承…...

AI编码时代到来?实现编程梦想的利器—Baidu Comate测评

文章目录 Comate智能编码是什么&#xff1f;Comate支持的环境 Comate应用安装实际操作对话式生成代码生成代码注释智能单测项目测试调优功能 总结 Comate智能编码是什么&#xff1f; 在如今这个拥抱AI的时代&#xff0c;市面上已经产出了很多Ai代码助手&#xff0c;如果你还没…...

去中心化自治组织(DAO)

文章目录 一、DAO (Decentralized Autonomous Organization) 去中心化自治组织 二、举例说明 1、例子1 2、例子2 总结 一、DAO (Decentralized Autonomous Organization) 去中心化自治组织 DAO是一种基于区块链平台上的组织结构&#xff0c;它通过智能合约来实现组织的…...

MySQL之多表查询

1. 前言 多表查询&#xff0c;也称为关联查询.指两个或两个以上的表一起完成查询操作.前提条件 : 这些一起查询的表之间是有关系的(一对一/一对多).他们之间一定是有关联字段&#xff0c;这个关联字段可能建立了外键&#xff0c;也可能没有建立外键. 2. 笛卡尔积现象(交叉连接…...

docker镜像容器常用命令

常用基础命令1、docker info #查看docker版本等信息 2、docker search jenkins #搜索jenkins镜像 3、docker history nginx #查看镜像中各层内容及大小,每层对应的dockerfile中的一条指令。 4、docker network ls #显示当前主机上的所有网络 5、docker logs nginx …...

Elasticsearch:利用Redis缓存解决ES查询延迟问题

因为ES的近时效性&#xff0c;所以insert或update es的数据的时候短时间可能查询不到&#xff08;1s左右&#xff09; 在es中新增的document会被收集到indexing buffer区后被重写成一个segment然后直接写入filesystem cache中&#xff0c;这个操作是非常轻量级的&#xff0c;相…...

AI作画算法详解:原理、应用与未来发展

随着人工智能技术的不断发展&#xff0c;AI作画逐渐成为了一个热门话题。AI作画&#xff0c;即利用人工智能算法生成绘画作品&#xff0c;不仅仅是技术的展示&#xff0c;更是艺术与科技结合的创新体现。本文将深入探讨AI作画的核心算法原理&#xff0c;并通过实例帮助读者更好…...

基于卷积神经网络CNN,使用二维卷积Conv2D实现MNIST数字识别的四种方法

前言 系列专栏&#xff1a;机器学习&#xff1a;高级应用与实践【项目实战100】【2024】✨︎ 在本专栏中不仅包含一些适合初学者的最新机器学习项目&#xff0c;每个项目都处理一组不同的问题&#xff0c;包括监督和无监督学习、分类、回归和聚类&#xff0c;而且涉及创建深度学…...

stack、queue、priority_queue以及仿函数

我们上次对std中的list进行实现&#xff0c;今天我们要实现stack、queue、priority_queue以及仿函数。 目录 stack堆堆的框架构造函数push插入pop删除size()大小empty()判断空top()取栈顶的元素 queue队列队列框架问题&#xff1a; 这里我们为什么用deque? 插入删除取头数据取…...

【GESP】2023年12月图形化三级 -- 小杨做题

小杨做题 【题目描述】 为了准备考试,小杨每天都要做题。第 1 天,小杨做了 a a a 道题,第 2 天,小杨做了 b b b...