zoukankan      html  css  js  c++  java
  • Java基础教程(15)--枚举类型

      枚举类型定义了一个枚举值的列表,每个值是一个标识符。例如,下面的语句声明了一个枚举类型,用来表示星期的可能情况:

    public enum Day {
        SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
    }
    

      实际上,这个声明定义的类型是一个类,它有7个实例。因此,在比较两个枚举类型的值时,永远不需要调用equals,直接使用“==”就可以了。
      枚举类型的值类似于一个常量,因此,按照惯例拼写都使用大写字母。而枚举类型的命名则与类名的命名规则一致。
      一旦定义了枚举类型,就可以使用这个类型来声明变量:

    Day day;
    

      变量day只能是枚举类型Day中的一个值或null。可以使用下面的语法访问枚举值:

    EnumName.ValueName
    

      例如,下面的语句将枚举值赋给变量day:

    day = Day.SUNDAY;
    

      可以在一个枚举类型的对象上使用下面的方法:

    • public String name();

      返回枚举值的名字。

    • public int ordinal();

      返回枚举值的序号。枚举类型中的第一个值序号为0,第二个值序号为1,依次类推。
      下面的例子展示了枚举类型的使用:

    public class EnumDemo {
        enum Day {
            SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
        }
        public static void main(String[] args) {
            Day day1 = Day.FRIDAY;
            Day day2 = Day.THURSDAY;
    
            System.out.println("The name of day1 is" + day1.name());
            System.out.println("The name of day2 is" + day2.name());
            System.out.println("The ordinal of day1 is" + day1.ordinal());
            System.out.println("The ordinal of day2 is" + day2.ordinal());
        }
    }
    

      这个程序的输出如下:

    The name of day1 is FRIDAY
    The name of day2 is THURSDAY
    The ordinal of day1 is 5
    The ordinal of day2 is 4
    

      由于枚举类型是Object类的子类和Comparable接口的实现类,因此可以对枚举对象调用Object类的方法,例如equals,toString等,也可以调用Comparable接口的compareTo方法。
      在switch-case语句中使用枚举类型时,case标签可以是省略枚举类型的枚举值,例如:

    switch (day) {
        case SUNDAY:
            // process SUNDAY
        case MONDAY:
            // process MONDAY
        ...
    }
    

      可以定义具有数据域、构造器和方法的枚举类型:

    public enum Day {
        SUNDAY("星期天"), MONDAY("星期一"), TUESDAY("星期二"), WEDNESDAY("星期三"),
        THURSDAY("星期四"), FRIDAY("星期五"), SATURDAY("星期六");
    
        public String description;
    
        private Day(String description) {
            this.description = description;
        }
    
        public String getDescription() {
            return description;
        }
    }
    

      需要注意的是,当枚举类型中除了枚举值的声明外还有其他部分时,枚举值的声明必须是第一条语句,且结尾处需要使用分号。此外,由于枚举值的数量是在编译期就确定的,因此不建议创建新的枚举值,所以Java语法要求枚举类型的构造方法是私有的以避免被直接调用。private修饰符可省略,这种情况下,构造方法也会被默认为私有的。

  • 相关阅读:
    Vue(小案例_vue+axios仿手机app)_go实现退回上一个路由
    nyoj 635 Oh, my goddess
    nyoj 587 blockhouses
    nyoj 483 Nightmare
    nyoj 592 spiral grid
    nyoj 927 The partial sum problem
    nyoj 523 亡命逃窜
    nyoj 929 密码宝盒
    nyoj 999 师傅又被妖怪抓走了
    nyoj 293 Sticks
  • 原文地址:https://www.cnblogs.com/maconn/p/10163287.html
Copyright © 2011-2022 走看看