Java学习26--枚举类

enum枚举

Java 枚举是一个特殊的类,一般表示一组常量,比如一年的 4 个季节,一年的 12 个月份,一个星期的 7 天,方向有东南西北等。

Java 枚举类使用 enum 关键字来定义,各个常量使用逗号 , 来分割。

enum Color 
{ RED, GREEN, BLUE; } 
values (), ordinal () 和 valueOf () 方法values () 返回枚举类中所有的值。ordinal ()方法可以找到每个枚举常量的索引,就像数组索引一样。valueOf ()方法返回指定字符串值的枚举常量。

enum枚举类,即一组固定的常量。枚举指的是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的集合。例如表示星期的SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY、SATURDAY就是一个枚举,可以定义一个枚举类型叫做DayOfWeek。定义方法如下:

public enum DayOfWeek {  SUNDAY,  MONDAY, TUESDAY,  WEDNESDAY,  THURSDAY,  FRIDAY,  SATURDAY
}  

一个简单的程序,一年四季(比较懒惰只写了两季),注意定义enum类时只允许输出,不允许输入所以没有设置set类(同时写了final关键字的variable也不能建立getter结构)。

package Enum;public class test {enum yearseason {//必须要在枚举类开头声明多个对象,对象之间使用,隔开SPRING("Spring", "the start of the year"),SUMMER("Summer", "hot season of the year");//声明当前对象的实例变量,使用private final修饰private final String pname;private final String pdetail;//私有化构造器private yearseason(String sname, String sdetail) {this.pname = sname;this.pdetail = sdetail;}public String getPname() {return pname;}public String getPdetail() {return pdetail;}public String toString(){return "season name is "+pname+";season detail is "+pdetail;}}public static void main(String[] args) {//yearseason WINTER = new yearseason("WINTER","cold weather of the year");//enum里面没有设置set结构所以不能写入哦System.out.println(yearseason.SPRING.getPname()+":"+yearseason.SPRING.getPdetail());System.out.println(yearseason.SUMMER.toString());}
}

程序输出:

Spring:the start of the year
season name is Summer;season detail is hot season of the yearProcess finished with exit code 0

values () 方法的使用:

依次输出每个枚举类型时候可以这样

 public static void main(String[] args) {//enum类的名称+[]+自定义的数组名称 = enum类的名称.values()//即可返回数组中的所有值DayOfWeek [] x_total=DayOfWeek.values();//for(每个元素:数组名){XXX}增强for循环,能快速输出一个数组的内容for(DayOfWeek h_each:x_total){//for(DayOfWeek h_each:DayOfWeek.values())//当然这样写也是一模一样的,它相当于上面两行合并了System.out.println("today is "+h_each);}}

返回值

today is SUNDAY
today is MONDAY
today is TUESDAY
today is WEDNESDAY
today is THURSDAY
today is FRIDAY
today is SATURDAY

ordinal ()方法的使用

(返回所寻元素数组下标,返回值int)

enum DayOfWeek{SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY
}
public class my_enum{public static void main(String[] args) {// 获取WEDNESDAY枚举常量的位置,这里应是【3】下标位置int ord = DayOfWeek.WEDNESDAY.ordinal();System.out.println("WEDNESDAY的位置(ordinal): " + ord);// 输出: WEDNESDAY的位置(ordinal): 3}
}
WEDNESDAY的位置(ordinal): 3

valueOf ()方法的使用

valueOf() 方法也是 Enum 类的一个静态方法,它用于将给定的字符串名称转换为对应的枚举常量。
如果字符串名称与枚举类型中某个常量的名称匹配,则 valueOf() 方法返回该常量;否则,它将抛出一个错误 IllegalArgumentException。

 enum DayOfWeek{SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY
}
public class my_enum{public static void main(String[] args) {System.out.println(DayOfWeek.valueOf("TUESDAY"));System.out.println("=========>");System.out.println(DayOfWeek.valueOf("666"));}
}

结果

TUESDAY
=========>
Exception in thread "main" java.lang.IllegalArgumentException: No enum constant exception.demo02.DayOfWeek.666at java.base/java.lang.Enum.valueOf(Enum.java:274)at exception.demo02.DayOfWeek.valueOf(my_enum.java:73)at exception.demo02.my_enum.main(my_enum.java:81)Process finished with exit code 1

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

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

相关文章

微服务Day6

文章目录 DSL查询文档RestClient查询文档快速入门 旅游案例 DSL查询文档 RestClient查询文档 快速入门 Testvoid testMatchAll() throws IOException {//1.准备RequestSearchRequest request new SearchRequest("hotel");//2.准备DSLrequest.source().query(QueryB…

海外媒体推广通过5个发稿平台开拓国际市场-华媒舍

随着全球化的进程,国际市场对于企业的吸引力日益增加。进入国际市场并获得成功并非易事。海外媒体推广发稿平台成为了一种重要的营销手段,能够帮助企业在国际市场中建立品牌形象、传递信息和吸引目标受众。本文介绍了五个海外媒体推广发稿平台&#xff0…

Linux系统安装部署RabbitMQ详细教程(图文详解)

前言:在分布式系统中进行消息传递和通信时,可能会用到RabbitMQ,这边我写一篇简易的部署教程,带大家了解一下,只要跟着文章一步步走就可以部署成功了,其中的坑博主都替大家踩过了。 博主的其他部署教程: 1、Docker部署前后端分离项目:手把手通过Docker部署前后端分离项目…

Linux:gcc的基本知识

gcc 是一个将C语言文件变成可执行文件的工具。 在Linux中,如果需要将一个C语言文件变得可以执行,那么除了这个文件本身的内容是C语言编写的内容外,还需要gcc这个编译工具进行编译才行。 gcc 使用的格式方法:gcc 要编译的文件 //在该代码下…

【软件架构】05-高性能架构

1、缓存 设计思路: 1.什么数据应该缓存 2.什么时机触发缓存和以及触发方式是什么 3.缓存的层次和粒度( 网关缓存如 nginx,本地缓存如单机文件,分布式缓存如redis cluster,进程内缓存如全局变量) 1&#…

Flink checkpoint操作流程详解与报错调试方法汇总,增量checkpoint原理及版本更新变化,作业恢复和扩缩容原理与优化

Flink checkpoint操作流程详解与报错调试方法汇总,增量checkpoint原理及版本更新变化,作业恢复和扩缩容原理与优化 flink checkpint出错类型flink 重启策略Checkpint 流程简介增量Checkpoint实现原理MemoryStateBackend 原理FsStateBackend原理RocksDBSt…

Javascript 运算符、流程控制语句和数组

【三】运算符 【1】算数运算符 (1)分类 加减乘除:*/取余:%和python不一样的点:没有取整// (2)特殊的点 只要NaN参与运算得到的结果也是NaNnull转换成0,undefined转换成NaN 【2…

oauth2基本概念

1.什么是oauth2 OAuth2.0介绍 OAuth(Open Authorization)是一个关于授权(authorization)的开放网络标准,允许用户授权第三方 应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他 们数据的所有内容。OAuth在全世界得到广泛应…

信息系统项目管理师(高项)—学习笔记

第一章信息化发展 1.1 信息与信息化 1.1.1 信息 信息是物质、能量及其属性的标示的集合,是确定性的增加。 它以物质介质为载体,在传递和反映世界各种事物存在方式、运动状态等的表征。 信息不是物质,也不是能力,它以一种普遍…

c++ qt五子棋联网对战游戏

C qt 五子棋联网对战游戏运行环境 Qt 6.6.0 (MSVC 2019 64-bit) 代码文件编码格式 ANSI txt文件编码格式 ANSI 测试用例 服务端端口被占用 通过客户端端口被占用 通过客户端连接服务端 服务端中途断开 通过客户端连接服务端 客户端中途断开 通过服务端没有启动 客户端启动…

编译遇到 AT_CHECK 未定义

mmdet/ops/nms/src/nms_cuda.cpp:4:23: error: ‘AT_CHECK’ was not declared in this scope; did you mean ‘DCHECK’?4 | #define CHECK_CUDA(x) AT_CHECK(x.type().is_cuda(), #x, " must be a CUDAtensor ")| ^~~~~~~~我在编译旧版本 m…

svn客户端下载、安装、使用

下载、使用 打开360软件管家,选怎宝库,搜索svn,点击安装 可以修改安装路径 使用 在桌面右键弹出菜单,点击 输入地址,点击ok 输入用户名、密码 ,等待检出完成

代码随想录算法训练营day38 | 509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯

动态规划,如果某一问题有很多重叠子问题,使用动态规划是最有效的。动态规划中每一个状态一定是由上一个状态推导出来的,这一点就区分于贪心,贪心没有状态推导,而是从局部直接选最优的。 动态规划问题五步曲 确定dp数…

【Linux】C语言实现超级简单进度条!你不会还不知道吧?

目录 1. 基础准备🎍 1.1 \r&&\n 1.2 缓冲区 2. 进度条1.0🥀 2.1 Process.h 2.2 Process.c 2.3 Main.c 2.4 Makefile 3.进度条 2.0🪺 3.1 Process.h 3.2 Process.c 3.3 Main.c 1. 基础准备🎍 1.1 \r&&…

关于信号强度单位dB和dBm区别

dB,dBm 都是功率增益的单位,不同之处如下: 一、dB 是一个相对值,表示两个量的相对大小关系,没有单位。当考虑甲的功率相比于乙功率大或小多少个dB时,按下面的计算公式:10log(甲功率/…

WPF真入门教程29--MVVM常用框架之MvvmLight

1、MVVM模式回顾 关于mvvm模式的基础知识,请看这2个文章: WPF真入门教程23--MVVM简单介绍 WPF真入门教程24--MVVM模式Command命令 做过VUE开发或微信小程序开发的伙伴,就知道MVVM模式,核心就是数据驱动控件,全栈开…

基于SpringBoot的家教管理系统

基于SpringBootVue的家教管理系统的设计与实现~ 开发语言:Java数据库:MySQL技术:SpringBootMyBatis工具:IDEA/Ecilpse、Navicat、Maven 系统展示 前台主页 家教 个人中心 管理员界面 摘要 本文介绍了基于SpringBoot框架开发的家…

如何正确设置CrossOver之偏好设置 crossover软件使用 crossover设定 crossover软件安装

CrossOver的核心是Wine,Wine是一个能在多种POSIX-compliant操作系统(如:Linux、Mac OS等)上运行Windows应用的兼容层。Wine不是Windows的模拟工具,它是把Windows API 调用翻译成为动态的 POSIX 调用,实现Li…

Docker部署Mysql8.0.2

1、 搜索Mysql docker search mysql 2、 精准搜索Mysql8.0.2 docker search mysql:8.0.2 3、 拉取镜像 docker pull mysql:8.0.2 4、 启动镜像 docker run --name mysql -id -p 3306:3306 -v /temp/mysql/log:/logs -v /temp/mysql/data:/var/lib/mysql -e MYSQL_ROOT…