枚举enum--Java开发入门(十八)

1. 定义枚举

Java中的枚举是表示一组常量,如生活中常见的星期,性别,月份。
定义枚举时用到enum关键字。
如:

public enum WeekDay {
    SUN, MON, TUE, WED, THU, FRI, SAT
}

上面定义了星期的枚举,未指定类型时的枚举默认是整型。从0开始依次递增。
有时候我们希望自已指定枚举变量的值,可以用下面的方法:

public enum WeekDay {
    SUN(0), MON(1), TUE(2), WED(3), THU(4), FRI(5), SAT(6);
    
    public final int value;
    WeekDay(int value) {
        this.value = value;
    }
}

如果想使用其他类型的枚举变量,可能用下面的方法:

public enum Sexual {
    MALE("男"), FEMALE("女");

    public final String value;

    Sexual(String value) {
        this.value = value;
    }
}

2. 枚举的使用

2.1 枚举和switch

使用枚举和switch联合使用,枚举和switch有着天然的匹配。

public class EnumStudy {
    public static void main(String[] args) {
        WeekDay weekDay = WeekDay.FRI;
        
        switch(weekDay){
            case SUN:
                System.out.println("今天是星期日");
                break;
            case MON:
                System.out.println("今天是星期一");
                break; 
            case TUE:
                System.out.println("今天是星期二");
                break;
            case WED:
                System.out.println("今天是星期三");
                break;
            case THU:
                System.out.println("今天是星期四");
                break;
            case FRI:
                System.out.println("今天是星期五");
                break;
            case SAT:
                System.out.println("今天是星期六");
                break;
            default:
                System.out.println("星期错误");

        }
    }
}

运行结果:

今天是星期五

2.2 枚举的方法

枚举默认继承了java.lang.Enum类,并且默认是最终类所以枚举不能被继承。在java.lang.Enum类中有values(), ordinal()valueOf()等方法。

  • values()方法,以数给形式返回枚举的所有成员
  • ordinal()方法,显示枚举成员定义时的顺序
  • valueOf()方法,返回字符串代表的枚举常量

使用values()方法遍历枚举

public class EnumStudy2 {
    public static void main(String[] args) {
        for(WeekDay weekDay : WeekDay.values()){
            System.out.println(weekDay);
        }
    }
}

运行结果:

SUN
MON
TUE
WED
THU
FRI
SAT

使用ordinal()方法显示枚举定义时的顺序

public class EnumStudy2 {
    public static void main(String[] args) {
        for(WeekDay weekDay : WeekDay.values()){
            System.out.print(weekDay);
            System.out.println(" ordinal = " + weekDay.ordinal());
        }
    }
}

运行结果:

SUN ordinal = 0
MON ordinal = 1
TUE ordinal = 2
WED ordinal = 3
THU ordinal = 4
FRI ordinal = 5
SAT ordinal = 6

使用valueOf()返回枚举常量

public class EnumStudy3 {
    public static void main(String[] args) {
        System.out.println(WeekDay.valueOf("SUN"));
        System.out.println(WeekDay.valueOf("MON"));
        System.out.println(WeekDay.valueOf("TUE"));
        System.out.println(WeekDay.valueOf("WED"));
        System.out.println(WeekDay.valueOf("THU"));
        System.out.println(WeekDay.valueOf("FRI"));
        System.out.println(WeekDay.valueOf("SAT"));
    }
}

运行结果:

SUN
MON
TUE
WED
THU
FRI
SAT

如果我们使用了枚举中不存在的常量,则会抛出异常

public class EnumStudy4 {
    public static void main(String[] args) {
        System.out.println(WeekDay.valueOf("SSS"));
    }
}

运行结果:
抛出异常不存在的常量

Exception in thread "main" java.lang.IllegalArgumentException: No enum constant Enum.WeekDay.SSS
	at java.lang.Enum.valueOf(Enum.java:238)
	at Enum.WeekDay.valueOf(WeekDay.java:11)
	at Enum.EnumStudy4.main(EnumStudy4.java:13)

3. 使用枚举的优点

  • 使用枚举可增加程序的可读性,常量名比数字更容易被人理解。
  • 使用枚举可以限定变量的赋值规则,防止变量被赋予非法的值。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小亮点科技

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值