Java之枚举

枚举

为了间接表示一些固定的值,Java提供了枚举。

枚举的概念

​ 是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内

枚举的定义格式
public enum Season {   
	枚举项1,枚举项2,枚举项3;
}
注意: 定义枚举类要用关键字enum

示例:

// 定义一个枚举类,用来表示春,夏,秋,冬这四个固定值
public enum Season {
    SPRING, SUMMER, AUTUMN, WINTER;
}
枚举的特点
  • 所有枚举类都是Enum的子类

  • 我们可以通过"枚举类名.枚举项名称"去访问指定的枚举项

  • 每一个枚举项其实就是该枚举的一个对象

  • 枚举也是一个类,也可以去定义成员变量

  • 枚举类的第一行上必须是枚举项,最后一个枚举项后的分号是可以省略的,但是如果枚举类有其他的东西,这个分号就不能省略。建议不要省略

  • 枚举类可以有构造器,但必须是private的,它默认的也是private的。

    枚举项的用法比较特殊:枚举("");

  • 枚举类也可以有抽象方法,但是枚举项必须重写该方法

举例说明

如果只提供有参构造时,每一个枚举项其实就是该枚举的一个对象,此时Season的每一个 枚举都默认会访问空参构造,但是此时无空参构造就会报错。
在这里插入图片描述

枚举类也可以有抽象方法,但是枚举项必须重写该方法
在这里插入图片描述

重写抽象方法后就不会报错。为什么不能访问private的成员变量,改为public即可。或者提供对应变量的getter()方法,通过getName()去访问。
在这里插入图片描述

枚举的方法
方法名说明
String name()获取枚举项的名称
int ordinal()返回枚举项在枚举类中的索引值
int compareTo(E o)比较两个枚举项,返回的是索引值的差值
String toString()返回枚举常量的名称
static T valueOf(Class type,String name)获取指定枚举类中的指定名称的枚举值
values()获得所有的枚举项

举例

public class SeasonDemo {

    public static void main(String[] args) {

        //String name() 获取枚举项的名称
        String name = Season.SPRING.name();
        System.out.println(name); //打印结果为SPRING
        System.out.println("-----------------------");

        //int ordinal() 返回枚举项在枚举类中的索引值
        int index1 = Season.SPRING.ordinal();
        System.out.println(index1);//0
        int index2 = Season.SUMMER.ordinal();
        System.out.println(index2);//1
        int index3 = Season.AUTUMN.ordinal();
        System.out.println(index3);//2
        int index4 = Season.WINTER.ordinal();
        System.out.println(index4);//3
        System.out.println("-----------------------");

        //int compareTo(E o) 比较两个枚举项,返回的是索引值的差值
        int result = Season.SPRING.compareTo(Season.WINTER);
        System.out.println(result);//-3
        System.out.println("-----------------------");

        //String toString()   返回枚举常量的名称
        String str = Season.SPRING.toString();
        System.out.println(str);
        System.out.println("-----------------------");

        // static <T> T valueOf(Class<T> type,String name)
        //获取指定枚举类中的指定名称的枚举值
        Season spring = Enum.valueOf(Season.class, "SPRING");
        System.out.println(spring);//SPRING
        System.out.println(Season.SPRING == spring);//true
        System.out.println("-----------------------");
       
        //values()       获得所有的枚举项
        Season[] seasons = Season.values();
        for (Season season : seasons) {
            System.out.println(season);
        }   //SPRING SUMMER AUTUMN WINTER
        
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值