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

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.mrgr.cn/news/52051.html

相关文章:

  • 自定义类型——结构体
  • c#编写的各类应用程序
  • 65.DDR3读写控制器的设计与验证(2)
  • 60. 排列序列
  • Windows11桌面快捷方式图标变为白色方块-如何解决
  • C++11 使用 {} 进行初始化
  • 【微信小程序_18_WXS脚本】
  • TemporalBench:一个专注于细粒度时间理解的多模态视频理解的新基准。
  • 从实习到春招成为一名安全工程师,我经历了什么
  • mqtt与云服务器
  • 2024了,传统行业转行AI,可不可行?
  • Java 虚拟机(JVM)中的内存泄漏排查技巧及各种内存查看命令分析工具推荐
  • C语言中点操作符(.)和箭头操作符(->)的区别
  • 汽车免拆诊断案例 | 2023款零跑C01纯电车后备厢盖无法电动打开和关闭
  • 对“一个中心,三重防护”中安全管理中心的理解
  • 数据结构深度优先搜索遍历连通图+非连通图(C语言代码+遍历+终端输入内容)
  • 超详细的B/S和C/S架构对比
  • 【PT-RS】
  • SIEMENS罗宾康LDZ14501001.140功率单元适合哪些场合使用?
  • 【论文阅读】03-Diffusion Models and Representation Learning: A Survey