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 ...
最新文章
- 字符串插入_计算机毕业设计中小程序插入html代码
- Java多线程——Thread Runnable源码解析
- python做接口自动化如何输出测试报告-python生成接口自动化测试报告模版
- 浅尝boost之format
- Java Web 项目SSO实战
- BAT大揭秘:在腾讯、百度、阿里上班,差别竟然这么大?
- 编写一个matlab矩阵函数,MATLAB矩阵 及图像函数
- VBScript教程之一(Hello VBScriopt)
- Food Webs - 网络中度及集聚系数实现
- 冒泡排序正序逆序例子
- win10系统无法连接xp工作组计算机,win10系统看不到windows xp系统主机上工作组的具体教程...
- 使用Python和地图api进行地图数据采集
- CVPR 2023 论文分类汇总:一个专为计算机视觉领域研究者打造的学术资源宝库
- 威客相当地址收藏_无需整理
- 2021-05-16刷题
- getvod.php_PHPvod模板开发手册PHPvod模板开发手册.pdf
- 成功销售心理学(1)
- Typora上传图片设置
- MySQL的性能优化及自动化运维实践与Mysql高并发优化
- 三相全控tc787触发电路_教你快速看懂电子电路图
热门文章
- SolidUI的发展:不要身背历史包袱
- php 转换成字节数组吗,在PHP中如何将字节数组转换成字符串?
- vant weapp 下拉_Vant Weapp小程序蹲坑之使用submit-bar组件
- 怎么才能让电脑无法玩英雄联盟LOL?
- mysql to_day函数_mysql 日期函数to_days注意事项
- android密码小眼睛,android 实现点击edittext的“小眼睛”切换明密文
- CSGO游戏搬砖项目线上直播课来啦
- 联想R9000P在ubuntu20.04下外接显示屏使用
- Sentinel:分布式系统的流量防卫兵 | Spring Cloud 19
- 20191012——POI设置单元格自动行高(思路)