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学习总结相关推荐

  1. java 枚举学习--从小程序中学习

    java 枚举学习--从小程序中学习 Java 枚举类型 解析 简介:java中枚举是一个类 用之前我觉得还是要知道应该何时使用: 一条普遍的规律是,任何使用常量的地方,例如目前使用的switch 代 ...

  2. Java的学习(上)

    JAVA的学习(上) 2019版尚硅谷Java入门视频教程,哔哩哔哩链接:https://www.bilibili.com/video/BV1Kb411W75N?p=5 一.Java概述 Java基础 ...

  3. 01 | Java入门级学习指南

    01 | Java入门级学习指南 前言 第一部分:JAVA 设计和编程基础 1.1Java 语言基础 1.2Java 面向对象 1.3Java 核心类库 1.4Java SE实战项目 第二部分:数据库 ...

  4. JAVA视频学习笔记-马士兵(六)

    `JAVA视频学习笔记-马士兵` 常用类_字符串相关类(20200614~16) 常用类_字符串相关类(20200617) 常用类_基本数据类型包装类(20200618) 常用类_Math类(2020 ...

  5. 深圳Java培训学习:Java8.0新特性之Lambda表达式--【千锋】

    深圳Java培训学习:Java8.0新特性之Lambda表达式–[千锋] 前言 Java 8 已经发布很久了,很多报道表明Java 8 是一次重大的版本升级.本篇文章,主要给大家介绍的是lambda表 ...

  6. Java基础学习——第十章 枚举类注解

    Java基础学习--第十章 枚举类&注解 一.枚举类(enum) 1. 枚举类的概念 枚举类:类的对象只有有限个,确定的 线程状态:创建.就绪.运行.阻塞.死亡 当需要定义一组常量时,强烈建议 ...

  7. 【大学四年自学Java的学习路线】写了一个月,这是一份最适合普通大众、非科班的路线,祝你零基础快速找到一份满意的工作

    零基础自学 Java,大概多久可以找到工作? 最近又有一个读者"在你的世界各地"向我提了上面这个问题.但说实话,这个问题并不太好问答.因为 Java 是一门"历史悠久&q ...

  8. 尚学堂JAVA高级学习笔记_1/2

    尚学堂JAVA高级学习笔记 文章目录 尚学堂JAVA高级学习笔记 写在前面 第1章 手写webserver 1. 灵魂反射 2. 高效解析xml 3. 解析webxml 4. 反射webxml 5. ...

  9. 【大学四年自学Java的学习路线】观语如临情中景,无限感激言岂尽。 自知无兄难过河,谢言不叙恩情记!

    零基础自学 Java,大概多久可以找到工作? 最近又有一个读者"在你的世界各地"向我提了上面这个问题.但说实话,这个问题并不太好问答.因为 Java 是一门"历史悠久&q ...

最新文章

  1. 开发日记-20190815 关键词 读书笔记《Linux 系统管理技术手册(第二版)》DAY 23
  2. 中国合同环境服务行业规划可行性及运营动态分析报告2022-2028年
  3. Juniper 210 密码清不掉_三分钟学会如何找回mysql密码
  4. pycharm如何安装pythoncard_pycharm的各种设置,配置
  5. 使用ASP.NET Core 3.x 构建 RESTful API - 1. 开始
  6. java 适配器模式记载学习
  7. 纯CSS的方法解决文字溢出与截断的问题
  8. vs2010找不到服务器,在服务器上找不到Crystal Reports dll部署VS2010应用程序
  9. css3的target伪类
  10. [Algo] Print Matrix Diagonal 对角打印
  11. vim编辑器模式及使用方法
  12. Java+opencv+mysql实现人脸识别源码(人脸采集入库+人脸识别相似度)
  13. 对于8086cpu的探索发现
  14. Linux加密框架 crypto 哈希算法说明 同步哈希shash_alg | 异步哈希 ahash_alg | 通用部分抽象 hash_alg_common
  15. FreeRTOS临界区操作
  16. SlackwareLinux安装速成班(转)
  17. jacob不能在Linux系统使用!
  18. solidity基础学习
  19. git checkout恢复文件
  20. AD9361配置(1)

热门文章

  1. dev_open linux,linux 伪终端设备 /dev/ptmx
  2. 计算机词汇查询,计算机辅助英语词汇查询系统的设计.doc
  3. 小程序背景图片从服务器获取,小程序之背景图片的加载
  4. 在java中8421_JAVA常量介绍
  5. 地区json文件_【小例子】使用jQuery实现省市区三级联动显示,附源码json文件
  6. mysql最大执行时间_导入大型MySQL数据库时,最大执行时间超过300秒
  7. 元宵节快乐 | 2月15日 星期二 | 携程在国内率先开启混合办公模式;米哈游推出元宇宙品牌;AMD宣布完成对赛灵思的收购...
  8. 互联网晚报 | 8月12日 星期四 | 苏宁易购零售云将迈入“万店时代”;理想汽车今日港股上市;好未来励步推素质教育新产品...
  9. 2021年中国机器视觉市场研究报告
  10. 用好String、String[]和char[]真香(洛谷P1179题题解,Java语言描述)