有关enum 的再次理解:

    所有的枚举都继承自java.lang.Enum类。

    说到底enum也只是一个java类,只不过他有几个特殊的点。

    1、enum中的各个实例,就是enum的static实例化对象,而他自身将构造函数隐藏,所以我们只能使用代码中写到的实例而不能自己去new一个enum的实例。

    2、enum只是个java类,所以自定义函数方法和属性、多态、 重载、实现接口都是被允许的。

3、enum 内部自带name和ordinal,name就是实例的名字,ordinal就是对实例进行的一个排序的序号。所以我们可以使用 “==”或者“equals” 来判断enum是否相等。

    4、enum实现了 Comparable 接口,所以我们也可以使用compare,对enum大小进行判断,默认使用的是 ordinal属性。

    5、现在的switch可以使用enum作为判断依据。

    6、在接口内部实现接口 对实例进行分类

7、java.util.EnumSet和java.util.EnumMap是两个枚举集合。EnumSet保证集合中的元素不重复;EnumMap中的 key是enum类型,而value则可以是任意类型。

 package EnumT;

 import java.util.EnumSet;

 public enum ColorEnum {

     /**
*
* //1、 重写构造方法,使用多个构造方法重载 并使用
*/
RED,GREEN,BLUE("BULE"); private String value = "color";
private ColorEnum() {
} private ColorEnum(String value){
this.value = value;
} public String getValue() {
return value;
} public void setValue(String value) {
this.value = value;
} /**
* 重写 方法
* @return
*/
@Override
public String toString() {
return "ColorEnum{" +
"value='" + value + '\'' +
'}';
} static public void main (String... args){ /**
* 2、name ordinal
*/
//获取 name
String name = ColorEnum.RED.name();
//获取 ordinal
int ordinal = ColorEnum.RED.ordinal();
System.out.println("name: "+name+"\t ordinal: "+ordinal); /**
* 3、equals ==
*/
boolean equal ;
// == 判断 是否相等
equal = ( ColorEnum.RED==ColorEnum.RED);
System.out.println("== : "+equal);
// equals 判断相等
equal = (ColorEnum.RED.equals(ColorEnum.RED));
System.out.println("equals : "+equal); /**
* 4、compare
* 0、正、负 表示先后顺序
*/
int e = (ColorEnum.RED.compareTo(ColorEnum.BLUE));
System.out.println("compare :"+e);
/**
* 5、switch
*/
ColorEnum colorEnum = ColorEnum.RED;
switch (colorEnum){
case RED:break;
case BLUE:break;
case GREEN:break; }
/**
* 6、EnumSet
*/
EnumSet<ColorEnum> colorEnumsSet = EnumSet.allOf(ColorEnum.class);
for (ColorEnum colorEnum1 :colorEnumsSet){
System.out.println("EnumSet :"+colorEnum1.name());
} } }

运行结果:

ame: RED     ordinal: 0
== : true
equals : true
compare :-2
EnumSet :RED
EnumSet :GREEN
EnumSet :BLUE Process finished with exit code 0

有关 enum的重新理解的更多相关文章

  1. C语言枚举类型(Enum)深入理解

    在实际编程中,有些数据的取值往往是有限的,只能是非常少量的整数,并且最好为每个值都取一个名字,以方便在后续代码中使用,比如一个星期只有七天,一年只有十二个月,一个班每周有六门课程等. 以每周七天为例, ...

  2. java源码学习(三)Enum

    Enum Enum类是java.lang包中一个类,他是Java语言中所有枚举类型的公共基类. 一.定义 public abstract class Enum<E extends Enum< ...

  3. Java 7 源码学习系列(二)——Enum

    Enum Enum类是java.lang包中一个类,他是Java语言中所有枚举类型的公共基类. 一.定义 public abstract class Enum<E extends Enum< ...

  4. c++编程规范的纲要和记录

    这是一本好书, 可以让你认清自己对C++的掌握程度.看完之后,给自己打分,我对C++了解多少? 答案是不足20分.对于我自己是理所当然的问题, 就不提了, 记一些有启发的条目和细节: (*号表示不能完 ...

  5. c++编程规范的纲要和记录 (转)

    这是一本好书, 可以让你认清自己对C++的掌握程度. 看完之后,给自己打分,我对C++了解多少? 答案是不足20分. 对于我自己是理所当然的问题, 就不提了, 记一些有启发的条目和细节: (*号表示不 ...

  6. C++编程规范纲要要点小结

    这是一本好书, 可以让你认清自己对C++的掌握程度. 看完之后,给自己打分,我对C++了解多少? 答案是不足20分. 对于我自己是理所当然的问题, 就不提了, 记一些有启发的条目和细节: (*号表示不 ...

  7. 中秋佳节--理解Enum枚举

    一.Enum枚举的作用 1.使用枚举可以限定取值范围,枚举中定义的每个常量都可以理解为对象: Eg: Public enum Color{ RED, GREEN,BULE; } 说明:RED实际上就表 ...

  8. 关于对Enum的理解

    之前一直对枚举类型的理解存在误解,现重新学习 Enum 类型的介绍 枚举类型(Enumerated Type) 很早就出现在编程语言中,它被用来将一组类似的值包含到一种类型当中.而这种枚举类型的名称则 ...

  9. 深入理解Java枚举类型(enum)

    https://blog.csdn.net/javazejian/article/details/71333103 深入理解Java类型信息(Class对象)与反射机制 深入理解Java枚举类型(en ...

随机推荐

  1. Linux常用命令大全 --- 文件备份和压缩命令

    在linux中,常用的文件压缩工具有gzip.bzip2.zip . bzip2是最理想的压缩工具,它提供了最大限度的压缩.zip 兼容性好windows也支持 1.bzip2 命令 在shell 提 ...

  2. loadRunner之参数化,对用户名和密码进行参数化,并打印输出---实际操作:用户登录的账号用随机值来登录

    录制脚本,对用户名和密码进行参数化: Action() { web_url("WebTours", "URL=http://127.0.0.1:1080/WebTours ...

  3. python023 Python3 标准库概览

    Python3 标准库概览 操作系统接口 os模块提供了不少与操作系统相关联的函数. >>> import os >>> os.getcwd() # 返回当前的工作 ...

  4. ZOJ3860-Find the Spy

    Find the Spy Time Limit: 2 Seconds      Memory Limit: 65536 KB Whoooa! There is a spy in Marjar Univ ...

  5. 准确率(Precision),召回率(Recall)以及综合评价指标(F1-Measure)

    准确率和召回率是数据挖掘中预测,互联网中得搜索引擎等经常涉及的两个概念和指标. 准确率:又称“精度”,“正确率” 召回率:又称“查全率” 以检索为例,可以把搜索情况用下图表示:   相关 不相关 检索 ...

  6. CSU 1290 DP解决数学期望问题

    题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1290 题目大意: 给定k个数,每次可以生成0-N-1中的任何一个数,k个数中出现不同的整 ...

  7. jsonp跨域请求实现示例

    网上看了很多关于jsonp的资料,发现在本机运行后实现不了,有的是有错漏,有的是说的比较含糊,接合自己的情况,整了一个可运行的示例: 前言: ajax请求地址:http://192.168.1.102 ...

  8. js中trim函数的简单实现

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...

  9. 飞扬的小鸟(codevs 3729)

    题目描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管或者掉在地上的话,便 ...

  10. BZOJ1744: [Usaco2005 oct]Skiing 奶牛滑雪

    n<=100 * m<=100的地图,每个数绝对值不超过25,从1,1到n,m,一开始速度v,从数字A走到数字B速度会变成v*2^(A-B),求到终点最短时间. 可以发现,相同的数字出发的 ...