目录

枚举的定义

枚举的使用

values()的使用

ordinal()的使用

valueOf() 的使用

compareTo()的使用

枚举的优缺点


枚举的定义

枚举是JDK1.5以后引入的。主要用途:将一组常量组织起来,在引入枚举之前表示一组常量通常是使用定义常量的方式:

    public static final int RED = 1;public static final int GREEN = 2;public static final int BLACK = 3;

在引入枚举后我们可以将上述的常量举例直接写成类的形式:

public enum TestEnum {RED,GREEN,BLACK;
}

枚举的优点:将常量统一组织起来管理

应用场景:错误状态码、消息类型、颜色的划分.......

本质:我们所定义的枚举类,是java.lang.Enum的子类,虽然在写枚举类的时候未写出其继承Enum类,但是其默认继承了这个类.

枚举的使用

Enum类常用的方法

方法名称 描述
values() 以数组形式返回枚举类型的所有成员
ordinal() 获取枚举成员的索引位置
valueOf() 将普通字符串转换为枚举示例
compareTo() 比较两个枚举成员在定义时的顺序

通过构造方法,定义出一个枚举类

public enum TestEnum {//枚举对象CAT("猫"),DOG("狗"),BIRD("鸟");public String animal;/*** 枚举的构造方法,默认是私有的* @param animal*/TestEnum(String animal) {this.animal = animal;}
}

values()的使用

values()方法是以数组形式返回枚举类型的成员,定义一个枚举类型的数组接收枚举成员,再将其输出.

    public static void main(String[] args) {TestEnum[] testEnums = TestEnum.values();for(TestEnum x : testEnums){System.out.println(x);}}

运行结果 

ordinal()的使用

利用ordinal()方法可以获取枚举成员的索引位置,具体使用如下所示:

    public static void main(String[] args) {TestEnum[] testEnums = TestEnum.values();for(TestEnum x : testEnums){System.out.println(x + " " + x.ordinal());}}

运行结果 

valueOf() 的使用

在定义好枚举类之后,利用valueOf()方法将输入的字符串转换为枚举示例,再对其进行判断

    public static void main(String[] args) {Scanner scan = new Scanner(System.in);while(scan.hasNext()) {TestEnum testEnum = TestEnum.valueOf(scan.next());switch(testEnum) {case CAT:System.out.println("猫");break;case DOG:System.out.println("狗");break;case BIRD:System.out.println("鸟");break;default:break;}}}

运行结果

compareTo()的使用

通过对源码的分析,可以发现compareTo()方法的返回值为两个枚举对象的位置差值.

例如:

    public static void main(String[] args) {System.out.println(CAT.compareTo(DOG));System.out.println(DOG.compareTo(CAT));System.out.println(BIRD.compareTo(CAT));System.out.println(CAT.compareTo(BIRD));}

运行结果

以下列语句进行分析

System.out.println(CAT.compareTo(BIRD));

在定义枚举类时,CAT是默认下标为0的位置,BIRD是默认下标为2的位置,当两个进行比较时,返回的是CAT下标-BIRD下标,结果为-2;

上述所有的示例代码已上传至gitee代码仓库中:点击查看代码

枚举的优缺点

优点

1、枚举常量更简单安全;

2、枚举具有内置方法,代码更可观优雅

缺点

1、不可继承,无法扩展.

Java~枚举的使用相关推荐

  1. java 枚举的继承_java中枚举类可以被继承吗?

    java 枚举类 java中,使用关键字enum来定义枚举类,枚举类是一个特殊的类,大部分功能和普通类是一样的,区别为: ● 枚举类继承了java.lang.Enum类,而不是默认的Object类.而 ...

  2. Java枚举类使用方式

    Java枚举类使用方式 单枚举定义 : /*** * @title: 单枚举定义* @author: wll* @since: 2021-1-27 14:47:54*/ public enum Jud ...

  3. 比起睡觉,我更喜欢刷巨详细的Java枚举类,这是来自猿人的自觉呀

    零基础学习之Java枚举类 概述 JDK1.5之前 创建枚举类 代码示例 JDK1.5之后 创建枚举类 代码示例 枚举类继承父类 基本介绍 代码示例 枚举类实现接口 基本介绍 代码示例 枚举类实现单例 ...

  4. 你一定需要知道的高阶JAVA枚举特性!

    JAVA枚举,比你想象中功能还要强大! 我经常发现自己在Java中使用枚举来表示某个对象的一组值. 在编译时确定类型可以具有什么值的能力是一种强大的能力,它为代码提供了结构和意义. 当我第一次了解枚举 ...

  5. Java枚举原来还能这么用

    点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 前言 相信不少java开发者写过状态变更的业务,比如订单流程.请假流程等等.一般会搞一个状态 ...

  6. java 注解 enum_13 Java枚举和注解

    Java枚举 在某些情况下,一个类的对象是有限而且固定的.例如季节类,只能有 4 个对象. 当类的对象是有限时,就应该使用枚举,而不使用普通类.(枚举对象是单例模式) 枚举的属性 实现接口的枚举类 例 ...

  7. java 枚举(enum) 详细用法

    用法一:常量 在JDK1.5 之前,我们定义常量都是: public static fianl.... .现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法. p ...

  8. Java 枚举:实现接口

    http://blog.csdn.net/veryitman/article/details/7945949 所有的枚举类都继承自 Enum,因为 Java 不支持多继承,所以枚举无法继承其它类. 但 ...

  9. java枚举使用详解

    http://www.cnblogs.com/linjiqin/archive/2011/02/11/1951632.html java枚举使用详解 在实际编程中,往往存在着这样的"数据集& ...

  10. 【转】Java 枚举7常见种用法

    原文网址:http://softbeta.iteye.com/blog/1185573 Java 枚举7常见种用法 博客分类: java java枚举enmu  原创地址:http://blog.li ...

最新文章

  1. FTP 命令的使用详解
  2. jquery easyui datagrid 显示外键/子属性/二层属性的值的方法
  3. URAL 1152. False Mirrors(DP)
  4. Ubuntu 安装配置 MySql
  5. boost::math模块非有限环回的基本测试
  6. AWS如何迁移实例到另一个区?
  7. java运维工程师做什么_网络工程师和网络运维工程师有什么不同?
  8. mysql query browser的使用_影响MySQL性能的配置参数
  9. 破解class文件的第一步:深入理解JAVA Class文件
  10. xampp apache mysql配置_安装xampp(Apache+MySQL+PHP+PERL)
  11. 为什么要使用多层开发?
  12. 深度学习常用框架和基础模型
  13. Coil:为Kotlin而生的图片加载框架
  14. 滴滴开源 ​DoraemonKit:一款像哆啦A梦般全能的App研发工具
  15. 什么样的文案才算是好文案?
  16. 分体式降噪耳机哪个好用?入耳式降噪耳机排行榜!
  17. 学习Python,怎能不懂点PEP呢? 1
  18. [XCTF] [NJUPT CTF 2017] maze
  19. 将一个随机字符串中的所有字符升序排列,并倒叙打印
  20. Chainlink——白皮书简析(whitepaper v2)

热门文章

  1. 红米Note11/11Pro/11SE/11R秒解BL锁-跳168小时限制(RedNote 11 5G root 手机刷 magisk
  2. 字符串与字节数组及字符数组的转化
  3. APP自动化测试-12.Appium日志分析(原理)
  4. 美团在TIDB方面的实践
  5. 论文绘图——标量图篇
  6. 【Linux】Linux 如何打包压缩文件夹
  7. python通过经纬度算出距离_Python中如何利用经纬度进行距离计算
  8. Windows CMD.exe 系统找不到指定的路径
  9. POJ-1873-The Fortified Forest(二进制枚举+凸包)
  10. 三问联通:不能挣钱,拥抱互联网有用吗?