Java 枚举类

枚举类型

    在Java编程语言中,枚举类(Enum Class)是一种特殊的类,它用于表示一组固定的常量。这些常量通常用于定义变量的合法取值,比如一周的天数、交通信号灯的颜色等。枚举类提供了一种类型安全的方式来使用这些常量,使得代码更加清晰易懂,同时也减少了出错的可能性。

枚举类型的使用

定义枚举类

public enum Season {ONE("ONE1",11,2),TWO("TWO1",22,3),THREE("THREE3",33,4),FOUR("FOUR",44,5);
}

    其中:SPRING,SUMMER,AUTUMN,WINTER都是该枚举类的实例,也就是该类只有四个对象。

枚举类的常用方法

方法说明
name()获取枚举常量名称
values()获取枚举类型中所有枚举常量
ordinal()获取枚举常量的序号
valueOf(String name)根据枚举常量名称获取对应枚举常量
compareTo()     比较枚举常量声明的顺序
toString()返回枚举常量的字符串表示
public enum Season {ONE("ONE1",11,2),TWO("TWO1",22,3),THREE("THREE3",33,4),FOUR("FOUR",44,5);private String namer;private int or;private int c;private Season(String namer,int or,int c){this.namer = namer;this.or = or;this.c = c;}public static void main(String[] args) {System.out.println(Season.ONE);System.out.println(Season.valueOf("ONE"));System.out.println(Season.ONE.name());System.out.println(Season.TWO.ordinal());System.out.println("-------------------");System.out.println(Season.ONE.namer);System.out.println(Season.ONE.or);System.out.println(Season.ONE.c);System.out.println("-------------------");System.out.println(Season.ONE.compareTo(Season.THREE));System.out.println(Season.THREE.compareTo(Season.ONE));}
}

        


注: 

ordinal()返回的是枚举常量在定义时的序号,从0开始。

compareTo()是比较常量在定义时的顺序,所以会出现负数

可以看到输出了3个ONE,这3个方法的区别是: 

System.out.println(Season.ONE);

    这行代码直接引用了枚举 Season 中定义的 ONE 常量。当这行代码执行时,它会打印出 ONE 这个枚举常量的 toString() 方法返回的字符串。在大多数情况下,枚举的 toString() 方法默认返回的是枚举常量的名称(在这个例子中就是 "ONE")。

System.out.println(Season.valueOf("ONE"));

    这行代码使用了 Season 枚举的 valueOf(String name) 方法。这个方法接收一个字符串参数,并返回与该字符串名称匹配的枚举常量。如果找到了匹配的枚举常量,它会返回这个常量;如果没有找到,它会抛出 IllegalArgumentException。在这个例子中,由于 "ONE" 是 Season 枚举中的一个有效常量名称,因此 Season.valueOf("ONE") 会返回 Season.ONE。然后,System.out.println 会打印出 Season.ONE 的 toString() 方法返回的字符串,即 "ONE"。

System.out.println(Season.ONE.name());

    这行代码调用了 Season.ONE 的 name() 方法。枚举的 name() 方法返回的是枚举常量的名称,作为一个字符串。在这个例子中,Season.ONE.name() 会返回 "ONE"。因此,这行代码会打印出 "ONE"。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CasADi库C++用法整理学习---以NMPC代码为例

参考几个使用方法博客 1 官方文档写的很清楚 对SM,DM,XM数据类型疑惑。什么时候使用什么样的类型,还是都可以? x MX.sym(“x”) 这将创建一个 11 矩阵,即一个包含名为 x 的符号基元的标量。这只是显示名称&#xff…

基于Java的免税商品优选购物商城设计与实现代码(论文+源码)_kaic

目 录 摘 要 Abstract 第一章 绪论 1.1 课题开发的背景 1.2 课题研究的意义 1.3 研究内容 第二章 系统开发关键技术 2.1 JAVA技术 2.2 MyEclipse开发环境 2.3 Tomcat服务器 2.4 Spring Boot框架 2.5 MySQL数据库 第三章 系统分析 3.1 系统可行性研究…

ClickHouse的原理及使用,

1、前言 一款MPP查询分析型数据库——ClickHouse。它是一个开源的,面向列的分析数据库,由Yandex为OLAP和大数据用例创建。ClickHouse对实时查询处理的支持使其适用于需要亚秒级分析结果的应用程序。ClickHouse的查询语言是SQL的一种方言,它支…

01数组算法/代码随想录

一、数组 好久没写算法题,之前喜欢按着习惯选择刷题,很早以前就听说代码随想录,今天跟着代码随想录再过一遍算法 1.1二分查找 常见疑问 middle一定是在[left, right]这个范围内标准代码不会越界,因为在else if中出现越界后&…

【windows个性化】在 Windows 10/11 上使 Windows 任务栏半透明/透明

实现目的:在 Windows 10/11 上使 Windows 任务栏半透明/透明. TranslucentTB plugin 描述 只需几 MB 内存,几乎不占用 CPU,便可以在 Windows 10/11 上使 Windows 任务栏半透明/透明的轻量小工具 功能 高级颜色选择器(color picker)&…

X(twitter)推特广告类型有哪些?如何选择?

X(twitter)推特是全球最热门的几大社交媒体平台之一,也是很多电商卖家进行宣传推广工作的阵地之一。在营销过程中不可避免地需要借助平台广告,因此了解其广告类型和适配场景也十分重要。 一、广告类型及选择 1.轮播广告 可滑动的…

JavaScript的100个概念

JavaScript对初学者来说既是福音,也是挑战。一方面,掌握它后可以构建各种项目,比如网站、应用程序和服务器,还能在很多行业找到工作。但另一方面,它又充满怪异之处,并被各种复杂的库和框架包围。在这段课程…

FLUX LoRA模型揭秘:COMFYUI中的AI绘画新动力!

嗨,艺术爱好者们!今天我们要揭开一个神秘的面纱——FLUX LoRA模型,这个模型就像是一个神奇的魔法师,将COMFYUI中的AI绘画提升到了一个新的高度! 想象一下,你有一个AI助手,它能够理解你的绘画梦…

【Redis】Zset类型常用命令

文章目录 一. Zset有序集合简介.二. 添加元素相关命令.2.1 向有序集合中添加元素(zadd) 三. 查询元素相关操作.3.1 查询有序集合中的元素个数( zcard zcount)3.2 查询指定区间内的元素(zrange zrevrange zrangebyscore)3.3 查询有序集合中指定成员的排名(zrank zrevrank )3.4 查…

钴粉Co纳米微球100nm|CoNP/CoN2-C催化剂

钴粉Co纳米微球100nm|CoNP/CoN2-C催化剂 钴粉Co纳米微球100nm是一种具有独特物理和化学性质的纳米材料,因其高比表面积、优良的磁性和化学稳定性,在多个领域展现出广阔的应用前景。以下是关于钴粉Co纳米微球100nm的相关信息: 性质 高比表面…

ubuntu20.04安装gerrit

1、update 2、updategrale 一:安装前准备 配置管理gerrit的专属账号:(本次测试安装我用的ROOT) sudo adduser gerrit sudo usermod -a -G sudo gerrit //分配sudo 权限 sudo su gerrit java、git环境: sudo apt-get update sudo apt-g…

群晖前面加了雷池WAF,安装失败,然后无法识别出用户真实访问IP

有nas的相信对公网都不模式,在现在基础上传带宽能有100兆的时代,有公网代表着家里有一个小服务器,像百度网盘,优酷这种在线服务都能部署为私有化服务。但现在运营商几乎不可能提供公网ip,要么自己买个云服务器做内网穿…

多jdk版本环境下,jenkins系统设置需指定JAVA_HOME环境变量

一、背景 由于不同项目对jdk版本的要求不同,有些是要求jdk11,有些只需要jdk8即可。 而linux机器上安装jdk的方式又多种多样,最后导致jenkins打包到底使用的是哪个jdk,比较混乱。 1、java在哪 > whereis java java: /usr/bin/…

测试人生 | 双非院校,2年工作经验年薪近20万

本人本科毕业于双非院校,大学毕业之后就开始从事软件测试工作,有两年多的工作经验,工作当中学习的测试技能较少,比较多重复的工作内容,主要对软件进行功能测试、简单的接口测试及专项测试,自学的测试知识零…

【STL】模拟实现list

目录 list需要实现的接口 结点类的创建 迭代器类的实现 构造函数 运算符的重载 --运算符的重载 !运算符重载和运算符重载 operator* operator-> list的模拟实现 构造函数 拷贝构造函数 赋值运算符重载函数 析构函数 迭代器相关函数 begin和end front和back …

【超详细】TCP协议

TCP(Transmission Control Protocol 传输控制协议) 传输层协议有连接可靠传输面向字节流 为什么TCP是传输控制协议呢? 我们以前所看到的write接口,都是把用户级缓冲区的数据拷贝到发送缓冲区中,然后数据就由TCP自主决定了,所以…

crashrpt3 开源项目的Vs 2022 C++20及其以上的编译

1. 首先从github 下载源代码 crashrpt3 2. 用CMake Gui 编译成vs studio 工程文件 2.1 点击 config 按钮 2.2 依次点击 Generate 按钮、Open Project 按钮.之后vs 2022 会打开编译好的sln工程文件 3.全选解决方案里面的所有项目,设置C语言标准,我这里设置是最新C,即启用的是…

【文档智能】文本文字识别、公式识别、表格文字识别核心算法及思路及实践-DBNet、CRNN、TrOCR

前言 OCR技术作为文档智能解析链路中的核心组件之一,贯穿整个技术链路,包括:文字识别、表格文字识别、公式识别,参看下面这张架构图: 前期介绍了很多关于文档智能解析相关核心技术及思路,本着连载的目的&a…

IT监控平台可视化:多维度展示助力运维效率提升

在信息化时代,IT设备的稳定性与业务的连续性紧密相连,任何细微的故障都可能给企业带来巨大的损失。因此,IT运维团队面临着前所未有的挑战,他们需要迅速、准确地识别和解决问题,以确保业务的平稳运行。而IT监控平台的可…

应届生毕业找不到工作转行IT需要做好哪些准备呢?

前言 相信这是很多即将毕业的应届生们都非常关心的问题。在这里,我们将站在一个应届生毕业且对IT行业感兴趣的角度,来探讨一下这个问题。 首先,我们先来了解一下什么是应届生。应届生是指在学校毕业之后,能够在当年或者下一年度…