枚举类型

枚举类型

枚举类型可以取代以往常量的定义,即将常量封装在类或接口中

定义

public enum Constants{
    Constants_A,
    Constants_B,
}

enum是枚举类型的关键字

可以将枚举类型看成是一个类,继承于java.lang.Enum类

枚举类型常用方法

方法 具体含义 使用方法 举例
values() 可以将枚举类型成员以数组的形式返回 枚举类型名称.values() Constants.values()
valueOf() 可以实现将普通字符串转换成枚举实例 枚举类型名称.valueOf() Constants.valueOf("abc")
compareTo() 用于比较两个枚举对象在定义时的顺序 枚举对象.compareTo() Constants_A.compareTo()(Constants_B)
ordinal() 用于得到枚举成员的位置索引 枚举对象.ordinal() Constants_A.ordinal()

values()

将枚举中的所有枚举值以数组形式返回

enum SeasonEnum{            //四级枚举
    SPRING,SUMMER,AUTUMN,WINTER
}
public class Demo01 {
    public static void main(String[] args) {
        SeasonEnum es[]=SeasonEnum.values();
        for (int i = 0; i < es.length; i++) {
            System.out.println("枚举常量:"+es[i]);
        }
    }
}

valueOf()与compareTo()

用字符串创建一个季节的枚举值,并判断季节的位置

enum SeasonEnum{            //四级枚举
    SPRING,SUMMER,AUTUMN,WINTER
}
public class Demo02 {
    public static void main(String[] args) {
        SeasonEnum tmp=SeasonEnum.valueOf("SUMMER");   //根据字符串创建一个枚举值
        SeasonEnum es[]=SeasonEnum.values();           //获取所有枚举值
        for (int i = 0; i < es.length; i++) {
            String message="";    //待输出的消息
            int result=tmp.compareTo(es[i]); //记录两个枚举的比较结果
            if(result<0){
                message=tmp+"在"+es[i]+"的前"+(-result)+"个位置";
            }else if(result>0){
                message=tmp+"在"+es[i]+"的后"+result+"个位置";
            }else if(result==0){
                message=tmp+"与"+es[i]+"是同一个值";
            }
            System.out.println(message);
        }
    }
}
/*
SUMMER在SPRING的后1个位置
SUMMER与SUMMER是同一个值
SUMMER在AUTUMN的前1个位置
SUMMER在WINTER的前2个位置
*/

ordinal()

enum SeasonEnum{            //四级枚举
    SPRING,SUMMER,AUTUMN,WINTER
}
public class Demo03 {
    public static void main(String[] args) {
        SeasonEnum es[]=SeasonEnum.values();
        for (int i = 0; i < es.length; i++) {
            System.out.println(es[i]+"在枚举类型中位置索引值"+es[i].ordinal());
        }
    }
}
/*
SPRING在枚举类型中位置索引值0
SUMMER在枚举类型中位置索引值1
AUTUMN在枚举类型中位置索引值2
WINTER在枚举类型中位置索引值3
*/

枚举类型中的构造方法

规定构造方法必须被private修饰符所修饰

举例:

enum SeasonEnum{
    SPRING("万物复苏"),
    SUMMER("烈日炎炎"),
    AUTUMN("秋草枯黄"),
    WINTER("白雪皑皑");

    private String remarks;                 //枚举的备注
    SeasonEnum(String remarks){     //构造方法
        this.remarks="我是"+ this +",我来之后"+remarks+"。";
    }
    public String getRemarks(){      //获取备注值
        return remarks;
    }
}

public class Demo04 {
    public static void main(String[] args) {
        SeasonEnum es[]=SeasonEnum.values();
        for (int i = 0; i < es.length; i++) {
            System.out.println(es[i].getRemarks());
        }
    }
}

使用枚举类型的优势

  1. 类型安全
  2. 使数据定义紧凑有效
  3. 可以和程序其他部分完美交互
  4. 运行效率高
posted @ 2021-12-12 22:14  valder-  阅读(82)  评论(0)    收藏  举报