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

【java基础】枚举类(enum)

文章目录

  • 基本介绍
  • 快速使用
  • 字段、方法、构造器
  • 枚举类方法
    • toString方法
    • valueOf方法
    • values方法
    • ordinal方法

基本介绍

在java中有一种特殊的类型就是枚举类,对于一个有限的有固定值的集合,我们就可以考虑使用枚举类来进行表示,例如服装的大小为 小,中,大,超大。一个颜色集合为红色,蓝色,黄色,绿色

快速使用

枚举类使用enum进行标识,下面就是一个例子

public enum Color {BLUE, RED, GREEN, YELLOW
}

上面的代码我就定义了一个枚举类Color,里面有4个值,就代表4个对象(理解为4个Color实例对象),我们不能够通过new来进行构造对象,我们访问就是通过对象.属性来进行访问

    public static void main(String[] args) {Color blue = Color.BLUE;Color red = Color.RED;Color green = Color.GREEN;Color yellow = Color.YELLOW;}

对于枚举类的比较,我们通过==就可以了,不需要使用equals

        Color blue1 = Color.BLUE;Color blue2 = Color.BLUE;System.out.println(blue1 == blue2); // 输出true

字段、方法、构造器

我们可以为枚举类添加构造器,方法和字段,现在我们就来对上面的代码进行扩展

public enum Color {BLUE("蓝色"), RED("红色"), GREEN("绿色"), YELLOW("黄色");private String description;Color(String description) {this.description = description;}public String getDescription() {return description;}
}

我们在枚举类里面添加了一个description字段,用于颜色的中文表述,提供了一个构造器,我们在定义BLUE,RED,GREEN,YELLOW的时候就可以传入一个description。这样做有什么好处呢?
下面我就通过IDEA创建该Color对象,查看IDEA的提示
在这里插入图片描述
可以发现我们再使用枚举类的时候就可以很清楚的知道这个枚举类是用来表示什么的。

        Color color = Color.BLUE;System.out.println(color.getDescription()); // 输出蓝色

我们还可以使用枚举类里面的方法。

枚举类方法

在讲解方法之前,需要说明的是所有的枚举类都继承于Enum类,就好像所有类都继承Object类一样,下面介绍的方法都是基于Enum类的
在这里插入图片描述

toString方法

这个方法会返回枚举常量名

        Color green = Color.GREEN;Color yellow = Color.YELLOW;System.out.println(green.toString()); // 输出GREENSystem.out.println(yellow.toString());// 输出YELLOW

valueOf方法

这个方法用于构建枚举类,传入枚举类常量名即可

        Color color = Color.valueOf("RED");System.out.println(color.getDescription()); // 输出红色// 如果不存在传入的枚举常量,那么会报错Color color1 = Color.valueOf("xxx");

输出如下

在这里插入图片描述

values方法

使用枚举类名进行调用,会返回所有枚举常量的数组

        Color[] colors = Color.values();for (Color c : colors) {System.out.println(c);}

ordinal方法

这个方法会返回枚举常量在enum中声明的位置,从0开始
在这里插入图片描述

        Color red = Color.RED;int ordinal = red.ordinal();System.out.println(ordinal);

在Color中RED是第二个定义的,所以ordinal会返回1

http://www.lryc.cn/news/21210.html

相关文章:

  • Linux2
  • C语言基础应用(二)数据的转换与输入输出
  • C# 用NPOI读取EXCEL
  • 《高性能MySQL》——MySQL基准测试(笔记)
  • 微服务注册到Nacos后如何读取外网IP
  • 【华为OD机试模拟题】用 C++ 实现 - 匿名信(2023.Q1)
  • nginx配置https域名
  • c语言tips-大端小端存储介绍和使用union判断大小端
  • DevOps落地与转型:提升研发效能的方法与实践
  • 【测试】loadrunner安装
  • 物联网的新应用--触摸物联网
  • 用 Python 画如此漂亮的插图 ,So easy
  • vue-知识点总结
  • Dubbo源码解析-——SPI机制
  • 赛后补题:CF1789C Serval and Toxel‘s Arrays
  • Linux学习(8.7)命令与文件的搜寻
  • Linux下 Makefile文件基本语法二
  • 【前端】JavaScript构造函数
  • STM32单片机之温湿度检测系统(DTH11、OLED、LCD1602)
  • vitepress 就这几步操作,博客就搭好啦?
  • 【Python工具篇】Anaconda中安装python2和python3以及在pycharm中使用
  • Android 网络框架——Retrofit源码精析
  • 分布式算法 - Snowflake算法
  • 【java web篇】Maven的基本使用以及IDEA 配置Maven
  • 【蓝桥集训】第七天并查集
  • 【Playwright】扑面而来的Playwright测试框架
  • React(三) ——新、旧生命周期
  • IT男的一次中年破局尝试--出书
  • Python 内置函数eval()
  • 【ArcGIS Pro二次开发】系列学习笔记,持续更新,记得收藏