zoukankan      html  css  js  c++  java
  • Enumeration的学习

            枚举是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.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()+" "+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();
    }
  • 相关阅读:
    showSoftInput不起作用
    GridView在PopWindow中OnItemClick不响应
    白盒测试范围
    Winform的ListBox的ValueMember和DisplayMember绑定的名称所属对象必须是Public的。
    谷歌浏览器安装adblock广告屏蔽插件
    php+curl上传文件
    win10我能ping通他人,但他人ping不同我
    自己的配置文件以及操作
    安装redis,执行make test时遇到You need tcl 8.5 or newer in order to run the Redis test
    安装redis时遇到zmalloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录
  • 原文地址:https://www.cnblogs.com/kelly-one/p/7859906.html
Copyright © 2011-2022 走看看