Java 基础-31-枚举-认识枚举
在Java编程语言中,枚举(Enum)是一种特殊的类,它允许一组固定的常量。它们非常适合用来表示一组固定的值,比如星期几、季节、颜色等。枚举自Java 5开始引入,为定义常量提供了一种更强大和方便的方式。本文将带你了解什么是枚举以及如何在Java中使用它们。
枚举的基本概念
枚举类型是一种特殊的数据类型,它允许变量成为一组预定义的常量。使用枚举可以减少代码中的错误,因为它们限制了变量只能是预先定义好的值之一。
定义一个简单的枚举
定义枚举很简单,使用enum
关键字即可:
enum Day {SUNDAY, MONDAY, TUESDAY, WEDNESDAY,THURSDAY, FRIDAY, SATURDAY
}
上面的代码定义了一个名为Day
的枚举,它包含了七个实例,分别代表一周中的每一天。
使用枚举
定义好枚举后,你可以在switch语句中使用它们来执行不同的操作,例如:
public class EnumDemo {Day day;public EnumDemo(Day day) {this.day = day;}public void tellItLikeItIs() {switch (day) {case MONDAY:System.out.println("Mondays are bad.");break;case FRIDAY:System.out.println("Fridays are better.");break;case SATURDAY:case SUNDAY:System.out.println("Weekends are best.");break;default:System.out.println("Midweek days are so-so.");break;}}public static void main(String[] args) {EnumDemo firstDay = new EnumDemo(Day.MONDAY);firstDay.tellItLikeItIs();EnumDemo thirdDay = new EnumDemo(Day.WEDNESDAY);thirdDay.tellItLikeItIs();}
}
枚举的高级用法
除了基本的使用方法,枚举还可以包含构造函数、方法、字段等,使得它们更加灵活和强大。例如:
enum Planet {MERCURY (3.303e+23, 2.4397e6),VENUS (4.869e+24, 6.0518e6),EARTH (5.976e+24, 6.37814e6),MARS (6.421e+23, 3.3972e6);private final double mass; // in kilogramsprivate final double radius; // in metersPlanet(double mass, double radius) {this.mass = mass;this.radius = radius;}public double mass() { return mass; }public double radius() { return radius; }// universal gravitational constant (m3 kg-1 s-2)public static final double G = 6.67300E-11;public double surfaceGravity() {return G * mass / (radius * radius);}
}
在这个例子中,我们为每个行星添加了质量、半径属性,并提供了计算表面重力的方法。
总结
通过这篇文章,你应该对Java中的枚举有了基础的认识。枚举是一个非常有用的功能,能够帮助开发者编写更清晰、更安全的代码。无论是简单的还是复杂的场景,枚举都能提供有效的解决方案。希望这篇介绍能激发你进一步探索枚举的兴趣,并将其应用到你的项目中。
相关文章:
Java 基础-31-枚举-认识枚举
在Java编程语言中,枚举(Enum)是一种特殊的类,它允许一组固定的常量。它们非常适合用来表示一组固定的值,比如星期几、季节、颜色等。枚举自Java 5开始引入,为定义常量提供了一种更强大和方便的方式。本文将…...
问题1:Sinal 4在开启PAC检查的设备崩溃
问题信息 硬件不支持PAC(Pointer Authentication),此类错误就是signal 11的错误,崩溃信息如下: Build fingerprint: google/sdk_gphone64_arm64/emu64a:16/BP22.250221.010/13193326:userdebug/dev-keys Revision: 0 ABI: arm64 Timestamp: 2025-04-06 11:33:13.923…...
美团Leaf分布式ID生成器:雪花算法原理与应用
📖 前言 在分布式系统中,全局唯一ID生成是保证数据一致性的核心技术之一。传统方案(如数据库自增ID、UUID)存在性能瓶颈或无序性问题,而美团开源的Leaf框架提供了高可用、高性能的分布式ID解决方案。本文重点解析Leaf…...
【C++奇遇记】C++中的进阶知识(多态(一))
🎬 博客主页:博主链接 🎥 本文由 M malloc 原创,首发于 CSDN🙉 🎄 学习专栏推荐:LeetCode刷题集 数据库专栏 初阶数据结构 🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如…...
C++自学笔记---指针在数组遍历中的应用
指针在数组遍历中的应用 在这一篇文章中,我们可以看到指针在数组遍历中的具体应用例子。 1. 赋值 我们要创建一个将数组的所有元素赋值为 1 的函数,并使用解引用运算符来访问数组元素. 代码为: #include <iostream> using namespac…...
Java八股文-List集合
集合的底层是否加锁也就代表是否线程安全 (一)List集合 一、数组 array[1]是如何通过索引找到堆内存中对应的这块数据的呢? (1)数组如何获取其他元素的地址值 (2)为什么数组的索引是从0开始的,不可以从1开始吗 (3)操作数组的时间复杂度 ①查找 根据索引查询 未…...
二叉树——队列bfs专题
1.N叉树的层序遍历 我们之前遇到过二叉树的层序遍历,只需要用队列先进先出的特性就可以达到层序遍历的目的。 而这里不是二叉树,也就是说让节点的孩子入队列时不仅仅是左右孩子了,而是它的所有孩子。而我们看这棵多叉树的构造,它…...
ESPIDF备忘
ESP8266 环境搭建 Windows 首先确保安装好了vscode和git 在工作目录使用git 克隆这个 git clone --recursive https://github.com/espressif/ESP8266_RTOS_SDK.git下载 集成环境和 ESP8266编译工具 旧版本的集成工具可能有问题 这里用20200601版本的 https://dl.espressif.co…...
4-c语言中的数据类型
一.C 语⾔中的常量 1.生活中的数据 整数: 100,200,300,400,500 小数: 11.11 22.22 33.33 字母: a,b,c,d A,B,C,D 在 C 语⾔中我们把字⺟叫做字符. 字符⽤单引号引⽤。例如A’ 单词…...
ST 芯片架构全景速览:MCU、无线 SoC、BLE 模块、MPU 差异详解
在嵌入式开发中,ST 是一个非常常见的芯片厂商,其产品线覆盖了 MCU、无线芯片、BLE 模块以及运行 Linux 的 MPU 等多个领域。很多开发者初次接触 ST 时会对这些产品之间的关系感到困惑。 本文从分类视角出发,带你快速了解 ST 芯片家族的核心架构和主要用途。 🧭 ST 芯片四…...
第十章Python语言高阶加强-SQL(数据库)
目录 一.数据库介绍 二.MySQL的安装 三.MySQL入门使用 四.SQL基础和DDL 五.SQL—DML 六.SQL—DQL 1.基础查询 2.分组聚合 七.Python操作MySQL 1.基础使用 2.数据插入 此章节主要掌握并且了解SQL语法和基础使用。如:安装、增删改查,SQL在未来我…...
NO.71十六届蓝桥杯备战|搜索算法-递归型枚举与回溯剪枝|枚举子集|组合型枚举|枚举排列|全排列问题(C++)
什么是搜索? 搜索,是⼀种枚举,通过穷举所有的情况来找到最优解,或者统计合法解的个数。因此,搜索有时候也叫作暴搜。 搜索⼀般分为深度优先搜索(DFS)与宽度优先搜索(BFS)。深度优先遍历vs深度优先搜索,宽度…...
C++ 中为什么构造函数不需要实现虚函数,而析构函数需要?
在C中,构造函数不需要是虚函数,而析构函数往往需要,原因如下: 构造函数 对象创建顺序:构造函数的主要任务是初始化对象的成员变量,创建对象时需要先调用基类的构造函数,再调用派生类的构造函数…...
如何获取oracle cloud永久免费的vps(4C/24G)?
1.注册oracle cloud账号 Oracle Cloud 免费套餐 | Oracle 中国 新注册的小伙伴,可以在 30 天内,利用 300 美元免费储值,任性使用所有 Oracle Cloud 基础设施服务。 30 天后呢?你仍然可以畅享 Always Free 免费套餐中的云服务&am…...
TypeScript面试题集合【初级、中级、高级】
初级面试题 什么是TypeScript? TypeScript是JavaScript的超集,由Microsoft开发,它添加了可选的静态类型和基于类的面向对象编程。TypeScript旨在解决JavaScript的某些局限性,比如缺乏静态类型和基于类的面向对象编程,…...
java面试篇 并发编程篇
目录 1.线程的基础知识 1.线程与进程的区别? 2.并行与并发的区别? 3.创建线程的方式有哪些? 4.线程包括哪些状态?状态之间是如何变化的? 5.T1,T2,T3三个线程新建完毕后,如何保证…...
掌握 JSON 到表格转换:全面指南
高效地转换数据格式对于现代数据处理至关重要。JSON(JavaScript 对象表示法)因其灵活性而广受欢迎,而 CSV 或 Excel 等表格格式则更适用于数据分析和可视化。本文将介绍多种 JSON 转换为表格格式的方法,帮助您提升数据处理和可视化…...
【Spring Cloud Netflix】GateWay服务网关
1.基本概述 GateWay用于在微服务架构中提供统一的入口点,对请求进行路由,过滤和处理。它就像是整个微服务系统的大门,所有外部请求都要通过它才能访问到后端的各个微服务。 2.核心概念 2.1路由(Route) 路由是Spring Cloud gateWay中最基本…...
国产芯片解析:龙讯USB Type-C/DP Transmitter多场景覆盖,定义高速互联新标杆
在智能设备功能日益复杂化的今天,高速数据传输、高清视频输出与多功能接口融合已成为行业刚需。龙讯半导体(Lontium)凭借其领先的芯片设计能力,推出多款USB Type-C/DP Transmitter芯片,覆盖从消费电子到工业应用的…...
蓝桥杯 web 展开你的扇子(css3)
普通答案: #box:hover #item1{transform: rotate(-60deg); } #box:hover #item2{transform: rotate(-50deg); } #box:hover #item3{transform: rotate(-40deg); } #box:hover #item4{transform: rotate(-30deg); } #box:hover #item5{transform: rotate(-20deg); }…...
【Kubernetes】StorageClass 的作用是什么?如何实现动态存储供应?
StorageClass 使得用户能够根据不同的存储需求动态地申请和管理存储资源。 StorageClass 定义了如何创建存储资源,并指定了存储供应的配置,例如存储类型、质量、访问模式等。为动态存储供应提供了基础,使得 Kubernetes 可以在用户创建 PVC 时…...
4月7号.
双列集合的特点: Map中的常见API: //1.创建Map集合的对象 Map<String, String> m new HashMap<>();//2.添加元素 Stringvalue1 m.put("郭靖","黄蓉"); System.out.println(value1); m.put("韦小宝","沐剑屏"); m.put(&q…...
C++抽卡模拟器
近日在学校无聊,写了个抽卡模拟器供大家娱乐。 代码实现以下功能:抽卡界面,抽卡判定、动画播放、存档。 1.抽卡界面及判定 技术有限,不可能做的和原神一样精致。代码如下(注:这不是完整代码,…...
蓝桥杯 2. 开赛主题曲【算法赛】
2.开赛主题曲【算法赛】 - 蓝桥云课 这道题和3. 无重复字符的最长子串 - 力扣(LeetCode)类似,因为题目中规定只有小写字母,所以定义统计数组时只需要定义26个字母即可,然后每次遍历的字符减去‘a’即为他的下标 impo…...
Spring Boot 中的 Bean
2025/4/6 向全栈工程师迈进! 一、Bean的扫描 在之前,对于Bean的扫描,我们可以在XML文件中书写标签,来指定要扫描的包路径,如下所示,可以实通过如下标签的方式: <context:component-scan base-package&…...
基于springboot科研论文检索系统的设计(源码+lw+部署文档+讲解),源码可白嫖!
摘要 随着我国经济的高速发展与人们生活水平的日益提高,人们对生活质量的追求也多种多样。尤其在人们生活节奏不断加快的当下,人们更趋向于足不出户解决生活上的问题,线上管理系统展现了其蓬勃生命力和广阔的前景。与此同时,在此…...
Mysql入门
一、数据库三层结构 所谓安装Mysql数据库,就是在主机安装一个数据库管理系统(DBMS),这个管理程序可以管理多个数据库。DBMS(database manage system)一个数据库中可以创建多个表,以保存数据(信息)。数据库管理系统(DBMS)、数据库和表的关系如…...
如何解决uniapp打包安卓只出现功能栏而无数据的问题
如何解决uniapp打包安卓只出现功能栏而无数据的问题 经验来自:关于Vue3中调试APP触发异常:exception:white screen cause create instanceContext failed,check js stack -> at useStore (app-service.js:2309:15)解决方案 - 甲辰哥来帮你算命 - 博客…...
Python高级爬虫之JS逆向+安卓逆向1.1节-搭建Python开发环境
目录 引言: 1.1.1 为什么要安装Python? 1.1.2 下载Python解释器 1.1.3 安装Python解释器 1.1.4 测试是否安装成功 1.1.5 跟大神学高级爬虫安卓逆向 引言: 大神薯条老师的高级爬虫安卓逆向教程: 这套爬虫教程会系统讲解爬虫的初级&…...
剖析Mybatis中用到的设计模式
框架对很多设计模式的实现,都并非标准的代码实现,都做了比较多的自我改进。实际上,这就是所谓的灵活应用, 只借鉴不照搬, 根据具体问题针对性地去解决。 涉及到Mybatis源码知识和设计模式,这点我之前的博客均有涉及。 可以查看我的…...
MySQL 函数(入门版)
目录 一、字符串函数 1、常用的字符串函数 2、函数演示 3、具体案例 二、数值函数 1、常用的数值函数 2、函数演示 3、具体案例 三、日期函数 1、常用的日期函数 2、函数演示 3、具体案例 四、流程函数 1、常用的流程函数 2、函数演示 3、具体案例 在MySQL中&a…...
d202546
目录 一、罗马字符转数字 二、二叉树的右视图 三、sql-查询结果的质量和占比 一、罗马字符转数字 首先把两个字符组成一个数字做一下单独判断 然后就是单个字符转数字 public int romanToInt(String s) {int sum 0;char[] ch s.toCharArray();int i 0;while(i < ch.len…...
洛谷每日1题-------Day37__P1634 禽兽的传染病
题目背景 mxj 的启发。 题目描述 禽兽患传染病了。一个禽兽会每轮传染 x 个禽兽。试问 n 轮传染后有多少禽兽被传染? 输入格式 两个非负整数 x 和 n。 输出格式 一个整数,即被传染的禽兽数。 输入输出样例 输入 #1复制 10 2 输出 #1复制 121…...
c语言修炼秘籍 - - 禁(进)忌(阶)秘(技)术(巧)【第五式】动态内存管理
c语言修炼秘籍 - - 禁(进)忌(阶)秘(技)术(巧)【第五式】动态内存管理 【心法】 【第零章】c语言概述 【第一章】分支与循环语句 【第二章】函数 【第三章】数组 【第四章】操作符 【第五章】指针 【第六章】结构体 【第七章】const与c语言中一些错误代码 【禁忌秘术】 【第一式…...
理解进程和线程的概念
在操作系统中,进程和线程都是执行的基本单位,但它们在性质和管理方面有所不同 进程 定义: 进程是一个正在运行的程序的实例,是操作系统资源分配的基本单位。特点: 独立性:每个进程有其独立的内存空间、数据栈和其他辅助数据。重…...
【项目管理】第2章 信息技术发展 --知识点整理
Oracle相关文档,希望互相学习,共同进步 风123456789~-CSDN博客 (一)知识总览 对应:第1章-第5章 (二)知识笔记 二、信息技术的发展 1. 信息技术及其发展 1)计算机软硬件 计算机硬件由电子机械、光电元件等组成的物理装置,提供物质基础给计算机软件运行。软件包括程…...
docker部署rabbitmq
拉取镜像 docker pull rabbitmq:managementmanagement 标签表示包含管理插件,可以通过 Web 界面管理 RabbitMQ 启动容器 docker run --restartalways -d --name rabbitmq \-p 9004:5672 -p 9005:15672 \-e RABBITMQ_DEFAULT_USERrabbitmq \-e RABBITMQ_DEFAULT_P…...
手搓多模态-03 顶层和嵌入层的搭建
声明:本代码非原创,是博主跟着国外大佬的视频教程编写的,本博客主要为记录学习成果所用。 我们首先开始编写视觉模型这一部分,这一部分的主要功能是接收一个batch的图像,并将其转化为上下文相关的嵌入向量,…...
计算机系统---UEFI(统一可扩展固件接口)
一、UEFI定义与历史背景 UEFI(Unified Extensible Firmware Interface) 是替代传统BIOS的新一代固件接口标准,由UEFI论坛(前身是Intel的EFI论坛)制定,旨在解决BIOS在现代硬件和操作系统下的局限性。 设计…...
2025年渗透测试面试题总结-某四字大厂面试复盘扩展 二面 (题目+回答)
网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 某四字大厂面试复盘 二面 一、文件上传绕过WAF的15种深度技巧 二、SSRF利用与WAF绕过的8种高阶手法 …...
基于BP神经网络的杂草智能识别系统(杂草识别、Python项目)
基于BP神经网络的杂草智能识别系统 项目介绍 本项目是一个基于PyQt5和BP神经网络的杂草智能识别系统。系统通过图像处理和神经网络技术, 能够识别8种不同的杂草类别。用户可以通过上传图片,系统会自动识别图片中的杂草类别,并显示识别结果和…...
Java的Selenium的特殊元素操作与定位之时间日期控件
分为两种情况: 控件没有限制手动输入,则直接调用sendKeys方法写入时间数据 //时间日期控件处理 chromeDriver.get ("https://www,fliggy,com/?ttidsem.000000736&hlreferidbaidu.082076&route sourceseo"); chromeDriver.findElement (By.xpat…...
深入理解矩阵乘积的导数:以线性回归损失函数为例
深入理解矩阵乘积的导数:以线性回归损失函数为例 在机器学习和数据分析领域,矩阵微积分扮演着至关重要的角色。特别是当我们涉及到优化问题,如最小化损失函数时,对矩阵表达式求导变得必不可少。本文将通过一个具体的例子——线性…...
基于大数据的美团外卖数据可视化分析系统
【大数据】基于大数据的美团外卖数据可视化分析系统 (完整系统源码开发笔记详细部署教程)✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 该系统通过对海量外卖数据的深度挖掘与分析,能够为美团外卖平台提供运营决策支…...
TypeScript 类型系统详解
基础类型 TypeScript 支持丰富的基础数据类型,涵盖number、string、boolean、null、undefined、symbol以及bigint。这些类型为构建可靠的代码提供了基石。 数值类型(number):在 TypeScript 里,所有数字均为浮点数…...
【学Rust写CAD】33 近似 Alpha 混合函数(argb.rs补充方法)
源码 #[inline]pub fn over(self, dst: Argb) -> Argb {let a 256 - self.alpha32();let rb (dst.rb() * a) >> 8;let ag dst.ag() * a;Argb(self.0 (rb & Argb::MASK) | (ag & !Argb::MASK))}源码分析 这段代码实现了一个近似 Alpha 混合(“…...
4.3-4.6学习总结 Java:Set系列集合+双列集合+Map
Set系列集合: 元素是唯一的。 HashSet: 哈希值: 如果没有重写hashcode方法和equals方法,那么哈希值是根据地址值计算的。 LinkedHashSet: TreeSet底层为红黑树。 红黑树:两个红色节点不能相连。 双列集合&…...
深信服护网蓝初面试题
《网安面试指南》https://mp.weixin.qq.com/s/RIVYDmxI9g_TgGrpbdDKtA?token1860256701&langzh_CN 5000篇网安资料库https://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247486065&idx2&snb30ade8200e842743339d428f414475e&chksmc0e4732df793fa3bf39…...
2011-2019年各省地方财政商业服务业等事务支出数据
2011-2019年各省地方财政商业服务业等事务支出数据 1、时间:2007-2019年 2、来源:国家统计局、统计年鉴 3、指标:行政区划代码、地区、年份、地方财政商业服务业等事务支出 4、范围:31省 5、指标说明:地方财政在商…...
InfoSec Prep: OSCP靶场渗透
InfoSec Prep: OSCP InfoSec Prep: OSCP ~ VulnHubInfoSec Prep: OSCP, made by FalconSpy. Download & walkthrough links are available.https://www.vulnhub.com/entry/infosec-prep-oscp,508/ 1,将两台虚拟机网络连接都改为NAT模式 2,攻击机上做…...