枚举是jdk5.0之后的新特性。枚举的使用在编程中能起到很大的作用,本文从枚举的适用范围、枚举的特点、枚举的使用等三个方面学习枚举

一、枚举的使适用范围

“在有限的范围内选择值”:比如一个星期只有星期一到星期日,不可能出现星期八。

二、枚举的特点

1、枚举类是一种特殊形式的Java类。

2、枚举类中声明的每一个枚举值代表枚举类的一个实例对象。(在枚举的使用中会讲到)

3、与java中的普通类一样,在声明枚举类时,也可以声明属性、方法和构造函数,但枚举类的构造函数必须为私有的(这点不难理解)。

4、枚举类也可以实现接口、或继承抽象类。

5、JDK5中扩展了swith语句,它除了可以接收int, byte, char, short外,还可以接收一个枚举类型。

6、若枚举类只有一个枚举值,则可以当作单态设计模式使用。

三、枚举的使用

示例:查询学生的成绩,成绩范围对应成绩的等级

//适用范围:在有限的范围内选择值
public class EnumerationTest {
public static void main(String[] args) { //查询指定等级的成绩分数
EnumerationTest t=new EnumerationTest();
t.setGrade(Grade.E);
System.out.println(t.getGrade().getScore()+"\t"+t.getGrade().toLocalGrade()); //switch在enumeration中的应用
Grade grade=Grade.A;
switch (grade){
case A:
System.out.println("优");
break;
case B:
System.out.println("良");
break;
default:
System.out.println("不及格");
break;
}
//枚举的常用方法
for(Grade grade1:Grade.values()){//values()遍历枚举类的所有值 name()获取枚举的值 ordinal():获取枚举的序号
System.out.println(grade1.name()+"\t"+grade1.ordinal());
} } private String name;
private Grade grade; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Grade getGrade() {
return grade;
} public void setGrade(Grade grade) {
this.grade = grade;
}
}
//枚举类
enum Grade{//含有抽象方法的类一定是抽象类
A("100-90"){ //A表示被实例化的对象 private Grade(String score) 枚举类中声明的每一个枚举值代表枚举类的一个实例对象。 A相当于 Grade A=new Grade();
@Override
public String toLocalGrade() {//使用匿名内部类实现枚举类的抽象方法
return "优";
}
},
B("89-80"){//枚举类中声明的每一个枚举值代表枚举类的一个实例对象。
@Override
public String toLocalGrade() {
return "良";
}
},
C("79-70"){
@Override
public String toLocalGrade() {
return "好";
}
},
D("69-60"){
@Override
public String toLocalGrade() {
return "及格";
}
},
E("59-50"){
@Override
public String toLocalGrade() {
return "不及格";
}
},
F("49-40"){
@Override
public String toLocalGrade() {
return "最差";
}
}; private String score;
private Grade(String score){
this.score=score;
}
//该分数为只读的,不能对其进行修改
public String getScore() {
return score;
}
public abstract String toLocalGrade();
}

Enumeration的学习的更多相关文章

  1. 【Swift学习笔记00】——enumeration枚举类型遵循协议protocol

    Apple官方文档:The Swift Programming LanguageProtocols and Extensions一节的小节练习,要求自行定义一个enumeration枚举类型,并且遵循 ...

  2. 5.7(java学习笔记)Vector、Enumeration

    一.Vector Vector类实现一个可扩展的数组对象.与数组一样,它包含可以使用整数索引访问. 它的基本操作方法add(int index, E element),get(int index),i ...

  3. 吴裕雄--天生自然java开发常用类库学习笔记:foreach及Enumeration接口

    import java.util.Vector; import java.util.Enumeration; public class EnumerationDemo01{ public static ...

  4. DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记

    今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...

  5. Java集合专题总结(1):HashMap 和 HashTable 源码学习和面试总结

    2017年的秋招彻底结束了,感觉Java上面的最常见的集合相关的问题就是hash--系列和一些常用并发集合和队列,堆等结合算法一起考察,不完全统计,本人经历:先后百度.唯品会.58同城.新浪微博.趣分 ...

  6. java web学习总结(六) -------------------servlet开发(二)

    一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为servlet配置一些 ...

  7. 0032 Java学习笔记-类加载机制-初步

    JVM虚拟机 Java虚拟机有自己完善的硬件架构(处理器.堆栈.寄存器等)和指令系统 Java虚拟机是一种能运行Java bytecode的虚拟机 JVM并非专属于Java语言,只要生成的编译文件能匹 ...

  8. 关于JAVA学习计划和感想

    学习计划第一阶段:    JAVA语言基础知识.包括异常.IO流.多线程.集合类.    要求:异常------掌握try-catch-finally的使用          IO流------掌握字 ...

  9. 驱动开发学习笔记. 0.04 linux 2.6 platform device register 平台设备注册 1/2 共2篇

    驱动开发读书笔记. 0.04  linux 2.6 platform device register 平台设备注册  1/2 共2篇下面这段摘自 linux源码里面的文档 : Documentatio ...

随机推荐

  1. wp如何代码重启手机

    用过windows phone手机操作系统的人都知道,wp的系统设置界面很长一串,我们并不能快速进入想要的设置项,更受不了的是有些常用的设置项竟然在最下边.因为前段时间没事做,于是乎写了个wp的工具类 ...

  2. vdbench测试过程中遇到的小问题

    1.报Slave hd2-0 prematurely terminated 错误 首先根据提示查看hd2-0.stdout.html文件获取更多的错误信息,这个问题一般是未安装vdbench或者路径不 ...

  3. http2.0可行性研究

     一.http2比http1有了更多新特性 1.使用了多路复用的技术,并发量支持比http1大几个数量级: 2.二进制分帧,改善网络延迟情况,提高传输速率: 3.支持header的数据压缩,数据体积变 ...

  4. Mybatis笔记四:nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'id' in 'class java.lang.String'

    错误异常:nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for pr ...

  5. POJ.2251 Dungeon Master (三维BFS)

    POJ.2251 Dungeon Master (三维BFS) 题意分析 你被困在一个3D地牢中且继续寻找最短路径逃生.地牢由立方体单位构成,立方体中不定会充满岩石.向上下前后左右移动一个单位需要一分 ...

  6. 【learning】01分数规划

    问题描述 首先分数规划是一类决策性问题 一般形式是: \[ \lambda=\frac{f(x)}{g(x)} \] 其中\(f(x)\)和\(g(x)\)都是连续的实值函数,然后要求\(\lambd ...

  7. 省选模拟赛 arg

    1 arg (arg.cpp/in/out, 1s, 512MB)1.1 Description给出一个长度为 m 的序列 A, 请你求出有多少种 1...n 的排列, 满足 A 是它的一个 LIS. ...

  8. OpenCV---模糊操作

    推文:图像平滑处理(归一化块滤波.高斯滤波.中值滤波.双边滤波) 推文:图像的平滑与滤波 模糊操作 三种模糊操作方式 均值模糊 中值模糊 自定义模糊(可以实现上面两种模糊方式) 原理: 图像处理:基础 ...

  9. java中BigDecimal在金融行业中的使用

    1.引言 在java语言中,double和float用于二进制浮点型计算,无法得到精确的结果.而BigDecimal则用于精确的计算.不超过16位有效数字(最好是不超过13位)的科学和工程计算,可以使 ...

  10. Spring使用注解方式就行事务管理

    使用步骤: 步骤一.在spring配置文件中引入<tx:>命名空间<beans xmlns="http://www.springframework.org/schema/b ...