Java~枚举的使用
目录
枚举的定义
枚举的使用
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~枚举的使用相关推荐
- java 枚举的继承_java中枚举类可以被继承吗?
java 枚举类 java中,使用关键字enum来定义枚举类,枚举类是一个特殊的类,大部分功能和普通类是一样的,区别为: ● 枚举类继承了java.lang.Enum类,而不是默认的Object类.而 ...
- Java枚举类使用方式
Java枚举类使用方式 单枚举定义 : /*** * @title: 单枚举定义* @author: wll* @since: 2021-1-27 14:47:54*/ public enum Jud ...
- 比起睡觉,我更喜欢刷巨详细的Java枚举类,这是来自猿人的自觉呀
零基础学习之Java枚举类 概述 JDK1.5之前 创建枚举类 代码示例 JDK1.5之后 创建枚举类 代码示例 枚举类继承父类 基本介绍 代码示例 枚举类实现接口 基本介绍 代码示例 枚举类实现单例 ...
- 你一定需要知道的高阶JAVA枚举特性!
JAVA枚举,比你想象中功能还要强大! 我经常发现自己在Java中使用枚举来表示某个对象的一组值. 在编译时确定类型可以具有什么值的能力是一种强大的能力,它为代码提供了结构和意义. 当我第一次了解枚举 ...
- Java枚举原来还能这么用
点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 前言 相信不少java开发者写过状态变更的业务,比如订单流程.请假流程等等.一般会搞一个状态 ...
- java 注解 enum_13 Java枚举和注解
Java枚举 在某些情况下,一个类的对象是有限而且固定的.例如季节类,只能有 4 个对象. 当类的对象是有限时,就应该使用枚举,而不使用普通类.(枚举对象是单例模式) 枚举的属性 实现接口的枚举类 例 ...
- java 枚举(enum) 详细用法
用法一:常量 在JDK1.5 之前,我们定义常量都是: public static fianl.... .现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法. p ...
- Java 枚举:实现接口
http://blog.csdn.net/veryitman/article/details/7945949 所有的枚举类都继承自 Enum,因为 Java 不支持多继承,所以枚举无法继承其它类. 但 ...
- java枚举使用详解
http://www.cnblogs.com/linjiqin/archive/2011/02/11/1951632.html java枚举使用详解 在实际编程中,往往存在着这样的"数据集& ...
- 【转】Java 枚举7常见种用法
原文网址:http://softbeta.iteye.com/blog/1185573 Java 枚举7常见种用法 博客分类: java java枚举enmu 原创地址:http://blog.li ...
最新文章
- FTP 命令的使用详解
- jquery easyui datagrid 显示外键/子属性/二层属性的值的方法
- URAL 1152. False Mirrors(DP)
- Ubuntu 安装配置 MySql
- boost::math模块非有限环回的基本测试
- AWS如何迁移实例到另一个区?
- java运维工程师做什么_网络工程师和网络运维工程师有什么不同?
- mysql query browser的使用_影响MySQL性能的配置参数
- 破解class文件的第一步:深入理解JAVA Class文件
- xampp apache mysql配置_安装xampp(Apache+MySQL+PHP+PERL)
- 为什么要使用多层开发?
- 深度学习常用框架和基础模型
- Coil:为Kotlin而生的图片加载框架
- 滴滴开源 ​DoraemonKit:一款像哆啦A梦般全能的App研发工具
- 什么样的文案才算是好文案?
- 分体式降噪耳机哪个好用?入耳式降噪耳机排行榜!
- 学习Python,怎能不懂点PEP呢? 1
- [XCTF] [NJUPT CTF 2017] maze
- 将一个随机字符串中的所有字符升序排列,并倒叙打印
- Chainlink——白皮书简析(whitepaper v2)
热门文章
- 红米Note11/11Pro/11SE/11R秒解BL锁-跳168小时限制(RedNote 11 5G root 手机刷 magisk
- 字符串与字节数组及字符数组的转化
- APP自动化测试-12.Appium日志分析(原理)
- 美团在TIDB方面的实践
- 论文绘图——标量图篇
- 【Linux】Linux 如何打包压缩文件夹
- python通过经纬度算出距离_Python中如何利用经纬度进行距离计算
- Windows CMD.exe 系统找不到指定的路径
- POJ-1873-The Fortified Forest(二进制枚举+凸包)
- 三问联通:不能挣钱,拥抱互联网有用吗?