Java Enum学习总结
2019独角兽企业重金招聘Python工程师标准>>>
1. 关于 Java Enum:
学过 C/C++ 等语言的人,应该都对 Enum 类型略知一二。 Enum 一般用来表示一组相同类型的常量。如性别、日期、月份、颜色等。 对这些属性用常量的好处是显而易见的,不仅可以保证单例,且比较时候可以用 ”==” 来替换 equals , 是一种好的习惯。 JDK1.5 之前没有 Enum 这个类型,那时候一般用接口常量来替代。有了 JavaEnum 之后, 可以更贴近的表示这种常量。
2. 如何使用 Java Enum
简单的用法: JavaEnum 简单的用法一般用于代表一组常用常量,可用来代表一类相同类型的常量值。如:
性别:
public enum SexEnum {
male , female ;
}
颜色:
public enum Color {
RED , BLUE,GREEN,BLACK ;
}
枚举对象里面的值都必须是唯一的。可以通过 Enum 类型名直接引用该常量,如 SexEnum.male,Color.RED.
复杂用法: Java 为枚举类型提供了一些内置的方法,同时枚举常量还可以有自己的方法。可以很方便的遍历枚举对象,看个下面的例子:
1. 代码一
WeekDay.java :
/*** @author yubing.linyb* 2009.7.29* 定义一个枚举类型,代表星期一到星期日的7个缩写常量* 同时还定义了枚举类型的属性day,该属性可以是final,也可是变量* 同时还定义了该枚举类型的一个方法printDay*/
public enum WeekDay {Mon("Monday"), Tue("Tuesday"), Wed("Wednesday"), Thu("Thursday"), Fri("Friday"), Sat("Saturday"), Sun("Sunday");/**定义枚举类型自己的属性**/private final String day;private WeekDay(String day) {this.day = day;}/**定义枚举类型自己的方法**/public static void printDay(int i){switch(i){case 1: System.out.println(WeekDay.Mon); break;case 2: System.out.println(WeekDay.Tue);break;case 3: System.out.println(WeekDay.Wed);break;case 4: System.out.println(WeekDay.Thu);break;case 5: System.out.println(WeekDay.Fri);break;case 6: System.out.println(WeekDay.Sat);break;case 7: System.out.println(WeekDay.Sun);break;default:System.out.println("wrong number!");}}public String getDay() {return day;}
}
2.代码二
WeekDayTest.java:
/*** @author yubing.linyb* 2009.7.29* 测试枚举类型WeekDay.*/
public class WeekDayTest {public static void main(String args[]) {for (WeekDay day : WeekDay.values()) {System.out.println(day + "====>" + day.getDay());}WeekDay.printDay(5);}
}输出结果为:
Mon====>Monday
Tue====>Tuesday
Wed====>Wednesday
Thu====>Thursday
Fri====>Friday
Sat====>Saturday
Sun====>Sunday
Fri 3.Java Enum 原理
Java Enum类型的语法结构尽管和 java 类的语法不一样,应该说差别比较大。但是经过编译器编译之后产生的是一个class文件。
该class文件经过反编译可以看到实际上是生成了一个类,该类继承了java.lang.Enum.
WeekDay (javap WeekDay 命令之后得到的内容如下 ( 去掉了汇编代码 ) :
public final class WeekDay extends java.lang.Enum{public static final WeekDay Mon;public static final WeekDay Tue;public static final WeekDay Wed;public static final WeekDay Thu;public static final WeekDay Fri;public static final WeekDay Sat;public static final WeekDay Sun;static {};public static void printDay(int);public java.lang.String getDay();public static WeekDay[] values();public static WeekDay valueOf(java.lang.String);
}
转载于:https://my.oschina.net/amath321/blog/23742
Java Enum学习总结相关推荐
- java 枚举学习--从小程序中学习
java 枚举学习--从小程序中学习 Java 枚举类型 解析 简介:java中枚举是一个类 用之前我觉得还是要知道应该何时使用: 一条普遍的规律是,任何使用常量的地方,例如目前使用的switch 代 ...
- Java的学习(上)
JAVA的学习(上) 2019版尚硅谷Java入门视频教程,哔哩哔哩链接:https://www.bilibili.com/video/BV1Kb411W75N?p=5 一.Java概述 Java基础 ...
- 01 | Java入门级学习指南
01 | Java入门级学习指南 前言 第一部分:JAVA 设计和编程基础 1.1Java 语言基础 1.2Java 面向对象 1.3Java 核心类库 1.4Java SE实战项目 第二部分:数据库 ...
- JAVA视频学习笔记-马士兵(六)
`JAVA视频学习笔记-马士兵` 常用类_字符串相关类(20200614~16) 常用类_字符串相关类(20200617) 常用类_基本数据类型包装类(20200618) 常用类_Math类(2020 ...
- 深圳Java培训学习:Java8.0新特性之Lambda表达式--【千锋】
深圳Java培训学习:Java8.0新特性之Lambda表达式–[千锋] 前言 Java 8 已经发布很久了,很多报道表明Java 8 是一次重大的版本升级.本篇文章,主要给大家介绍的是lambda表 ...
- Java基础学习——第十章 枚举类注解
Java基础学习--第十章 枚举类&注解 一.枚举类(enum) 1. 枚举类的概念 枚举类:类的对象只有有限个,确定的 线程状态:创建.就绪.运行.阻塞.死亡 当需要定义一组常量时,强烈建议 ...
- 【大学四年自学Java的学习路线】写了一个月,这是一份最适合普通大众、非科班的路线,祝你零基础快速找到一份满意的工作
零基础自学 Java,大概多久可以找到工作? 最近又有一个读者"在你的世界各地"向我提了上面这个问题.但说实话,这个问题并不太好问答.因为 Java 是一门"历史悠久&q ...
- 尚学堂JAVA高级学习笔记_1/2
尚学堂JAVA高级学习笔记 文章目录 尚学堂JAVA高级学习笔记 写在前面 第1章 手写webserver 1. 灵魂反射 2. 高效解析xml 3. 解析webxml 4. 反射webxml 5. ...
- 【大学四年自学Java的学习路线】观语如临情中景,无限感激言岂尽。 自知无兄难过河,谢言不叙恩情记!
零基础自学 Java,大概多久可以找到工作? 最近又有一个读者"在你的世界各地"向我提了上面这个问题.但说实话,这个问题并不太好问答.因为 Java 是一门"历史悠久&q ...
最新文章
- 开发日记-20190815 关键词 读书笔记《Linux 系统管理技术手册(第二版)》DAY 23
- 中国合同环境服务行业规划可行性及运营动态分析报告2022-2028年
- Juniper 210 密码清不掉_三分钟学会如何找回mysql密码
- pycharm如何安装pythoncard_pycharm的各种设置,配置
- 使用ASP.NET Core 3.x 构建 RESTful API - 1. 开始
- java 适配器模式记载学习
- 纯CSS的方法解决文字溢出与截断的问题
- vs2010找不到服务器,在服务器上找不到Crystal Reports dll部署VS2010应用程序
- css3的target伪类
- [Algo] Print Matrix Diagonal 对角打印
- vim编辑器模式及使用方法
- Java+opencv+mysql实现人脸识别源码(人脸采集入库+人脸识别相似度)
- 对于8086cpu的探索发现
- Linux加密框架 crypto 哈希算法说明 同步哈希shash_alg | 异步哈希 ahash_alg | 通用部分抽象 hash_alg_common
- FreeRTOS临界区操作
- SlackwareLinux安装速成班(转)
- jacob不能在Linux系统使用!
- solidity基础学习
- git checkout恢复文件
- AD9361配置(1)
热门文章
- dev_open linux,linux 伪终端设备 /dev/ptmx
- 计算机词汇查询,计算机辅助英语词汇查询系统的设计.doc
- 小程序背景图片从服务器获取,小程序之背景图片的加载
- 在java中8421_JAVA常量介绍
- 地区json文件_【小例子】使用jQuery实现省市区三级联动显示,附源码json文件
- mysql最大执行时间_导入大型MySQL数据库时,最大执行时间超过300秒
- 元宵节快乐 | 2月15日 星期二 | 携程在国内率先开启混合办公模式;米哈游推出元宇宙品牌;AMD宣布完成对赛灵思的收购...
- 互联网晚报 | 8月12日 星期四 | 苏宁易购零售云将迈入“万店时代”;理想汽车今日港股上市;好未来励步推素质教育新产品...
- 2021年中国机器视觉市场研究报告
- 用好String、String[]和char[]真香(洛谷P1179题题解,Java语言描述)