目录

枚举的定义

枚举的使用

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. 字符串插入_计算机毕业设计中小程序插入html代码
  2. Java多线程——Thread Runnable源码解析
  3. python做接口自动化如何输出测试报告-python生成接口自动化测试报告模版
  4. 浅尝boost之format
  5. Java Web 项目SSO实战
  6. BAT大揭秘:在腾讯、百度、阿里上班,差别竟然这么大?
  7. 编写一个matlab矩阵函数,MATLAB矩阵 及图像函数
  8. VBScript教程之一(Hello VBScriopt)
  9. Food Webs - 网络中度及集聚系数实现
  10. 冒泡排序正序逆序例子
  11. win10系统无法连接xp工作组计算机,win10系统看不到windows xp系统主机上工作组的具体教程...
  12. 使用Python和地图api进行地图数据采集
  13. CVPR 2023 论文分类汇总:一个专为计算机视觉领域研究者打造的学术资源宝库
  14. 威客相当地址收藏_无需整理
  15. 2021-05-16刷题
  16. getvod.php_PHPvod模板开发手册PHPvod模板开发手册.pdf
  17. 成功销售心理学(1)
  18. Typora上传图片设置
  19. MySQL的性能优化及自动化运维实践与Mysql高并发优化
  20. 三相全控tc787触发电路_教你快速看懂电子电路图

热门文章

  1. SolidUI的发展:不要身背历史包袱
  2. php 转换成字节数组吗,在PHP中如何将字节数组转换成字符串?
  3. vant weapp 下拉_Vant Weapp小程序蹲坑之使用submit-bar组件
  4. 怎么才能让电脑无法玩英雄联盟LOL?
  5. mysql to_day函数_mysql 日期函数to_days注意事项
  6. android密码小眼睛,android 实现点击edittext的“小眼睛”切换明密文
  7. CSGO游戏搬砖项目线上直播课来啦
  8. 联想R9000P在ubuntu20.04下外接显示屏使用
  9. Sentinel:分布式系统的流量防卫兵 | Spring Cloud 19
  10. 20191012——POI设置单元格自动行高(思路)