枚举是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. P2774 方格取数问题

    题目背景 none! 题目描述 在一个有 m*n 个方格的棋盘中,每个方格中有一个正整数.现要从方格中取数,使任意 2 个数所在方格没有公共边,且取出的数的总和最大.试设计一个满足要求的取数算法.对于 ...

  2. Remember the Word UVALive - 3942(dp+trie)

    题意: 给S个不同的单词和一个长字符串 问将其分解为若干个单词有多少种方法(单词可重复使用) 解析: dp[i]表示在这个字符串中以某个位置i为起点的 的一段子字符串 则这个子字符串若存在某个前缀恰好 ...

  3. 浅谈Android发展趋势分析

    去年11月16.17日,我有幸参加了北京2017安卓技术大会,做了关于车载Android系统的演讲,并主持了诸多大咖参与的圆桌讨论,对Android未来几年的发展趋势进行了一番讨论.来自小米.百度.高 ...

  4. python基础----封装、封装与扩展性

    从封装本身的意思去理解,封装就好像是拿来一个麻袋,把小猫,小狗,小王八,还有egon和alex一起装进麻袋,然后把麻袋封上口子.但其实这种理解相当片面 首先我们要了解 要封装什么 你钱包的有多少钱(数 ...

  5. 怎么用spring cloud service-id 进行调用接口

    这里最关键的就是加上@LoadBalanced @SpringBootApplication public class ConsumerMovieApplication { @Bean @LoadBa ...

  6. 7.Configurator API 详细介绍

    一.Configurator类介绍与API解释 1.Configurator类介绍 1)用于设置脚本动过的默认延时 2)功能 a.可调节两个模拟动作间的默认时间间隔 b.可调节输入文本的输入时间间隔 ...

  7. 为Azure Web Site 添加ADFS验证支持之二 在代码里使用ADFS

    下面我们来创建一个MVC 5.0的ASP.Net程序,并且将它部署到Azure Web Site上 通过Visual Studio 2015创建Web Project 在选择ASP.net模板的地方, ...

  8. wx.showToast 延时跳转~~~

    //提交预约订单 wx.request({ url: 'http://www.pusonglin.cn/app/index.php?i=2&c=entry&do=api&op= ...

  9. horizon源码分析(一)

    源码版本:H版 一.写在前面 本来应该搭建horizon的development环境的,这样方便debug,但是由于各种报错,本人没有搭建成功,这也导致有很多源码疑问没有解决,后续可以继续补充这一部分 ...

  10. js获取本周、上周的开始结束时间

    这两天在做一个报表体统,其中涉及到了一个根据本周,上周,本月,上月的时间来进行查询的问题,在这个我就教一下大家怎么实现,大家如果有更好的实现方法的,我也希望大家能说出来,我们交流交流. 首先呢,我写了 ...