![a14d274b62704c288ec3b244df5d5bcc.png](https://img-blog.csdnimg.cn/img_convert/a14d274b62704c288ec3b244df5d5bcc.png)
一、什么是枚举
1.1 什么是枚举?
至于枚举,我们先拿生活中的枚举来入手,然后再引申Java中的枚举,其实它们的意义很相似。
谈到生活中的枚举,假如我们在玩掷骰子的游戏,在我们手中有两个骰子,要求掷出两个骰子的点数和必须大于6的概率,那么在此情此景,我们就需要使用枚举法一一列举出骰子点数的所有可能,然后根据列举出来的可能,求出概率。
可能有的小伙伴发现,这就是数学啊?这就是数学中的概率学和统计学。对,我们的枚举法就是常用于概率统计中的。
1.2 Java中的枚举类
Java 5.0引入了枚举,枚举限制变量只能是预先设定好的值。使用枚举可以减少代码中的 bug,方便很多场景使用。Java架构度寒冬zhuanlan.zhihu.com
![c0527cd0ee06148602a592f1387bf148.png](https://img-blog.csdnimg.cn/img_convert/c0527cd0ee06148602a592f1387bf148.png)
需要更多Java面试资料和学习干货可以关注我的专栏【Java架构度寒冬】本专栏会长期更新java架构技术以及心得等精彩文章!
二、Java枚举的语法
枚举类中的声明
访问修辞符 enum 枚举名 {
枚举成员,
枚举成员,
...
};
class类中枚举的声明
访问修饰符 class 类名 {
enum 枚举名 {
枚举成员,
枚举成员,
...
}
}
三、Java枚举类的使用规则和应用场景
3.1 Java枚举类的使用规则
至于枚举你也有所了解了,Java中的枚举也是一样的。而Java中枚举类的使用,也有特定的规则和场景。如果你看了以下的规则不明白的话,没有关系,继续向下学你就会明白,因为我在下面都会有讲解到这些规则。如下几个规则: 类的对象是确定的有限个数。 当需要定义一组常量时,建议使用枚举。 如果枚举类中只有一个对象,则可以作为单例模式的实现方法。 枚举类不能被继承 枚举类不能被单独的new创建对象 枚举类中的枚举成员是用,隔开的,多个枚举成员之间用_隔开 如果枚举类中的只有一个或多个枚举成员,其他什么都没有,我们在用,隔开的同时。最后可以省略;结束符。 注意: 如果关于枚举单例设计模式不太了解的小伙伴可以参考 深度学习单例设计模式一文,你肯定会有意想不到收获,请相信我!
3.2 Java枚举类的应用场景
根据Java中使用枚举类的规则,有以下几种场景适合来使用枚举类,如下: 星期: Monday(星期一)、Tuesday(星期二)、Wednesday(星期三)、Thursday(星期四)、Firday(星期五)、Saturday(星期六)、Sunday(星期日) 性别: Man(男)、Woman(女) 季节: Spring(春天)、Summer(夏天)、Autumn(秋天)、Winter(冬天) 支付方式: Cash(现金)、WeChatPay(微信)、Alipay(支付宝)、BankCard(银行卡)、CreditCard(信用卡) 订单状态: Nonpayment(未付款)、Paid(已付款)、Fulfilled(已配货)、Delivered(已发货)、Return(退货)、Checked(已确认) 线程状态: Establish(创建)、Ready(就绪)、Run(运行)、Obstruct(阻塞)、Die(死亡) 等等......
四、枚举类的基本使用步骤解析
那我们就解释以下这两个规则,我们在上述中已经了解了枚举的作用。Java中枚举也不例外,也是一一列举出来方便我们拿出来一个或多个使用。这有点像我们的多选框,我们把需要用到的所有选项内容放在各个多选框后面,当我们在使用的时候只需要勾选自己需要的勾选框即可,这就代表了我们需要被选中多选框后面的内容。
那么,Java中的枚举类是如何使用呢?
这里我们简单的模拟一个场景,假设你的女朋友十分的喜欢喝点冷饮或热奶茶之类的饮品,在生活中也有很多像蜜雪冰城等等这种类型的饮品店。当你为女朋友买她爱喝的珍珠奶茶时,服务员会问你,要大杯、中杯还是小杯的。当然,为了满足女朋友,你通常会选择大杯。这就意味着店内不允许顾客点规则外的饮品。
注意: 如果你是初学者或是不了解枚举类的使用,此基本使用不懂没有关系,请继续往下看即可!
于是,我用Java代码来实现一下,上述场景。
首先,创建枚举类。分别为珍珠奶茶添加大、中、小杯杯型。
package com.mylifes1110.java;
/**
* @ClassName PearlMilkTea
* @Description 为珍珠奶茶添加三个杯型:大、中、小
* @Author Ziph
* @Date 2020/6/8
* @Since 1.8
*/
public enum PearlMilkTea {
//注意:这里枚举类中只有枚举成员,我在此省略了;结束符
SMALL, MEDIUM, LARGE
}
其次,创建珍珠奶茶对象,再有方法来判断枚举类中的大、中、小杯。最后打印女朋友喝哪个杯型的珍珠奶茶!
package com.mylifes1110.test;
import com.mylifes1110.java.PearlMilkTea;
/**
* @ClassName PearlMilkTeaTest
* @Description 为女朋友买哪个杯型的珍珠奶茶(默认大杯)
* @Author Ziph
* @Date 2020/6/8
* @Since 1.8
*/
public class PearlMilkTeaTest {
public static void main(String[] args) {
//创建大杯的珍珠奶茶对象
PearlMilkTea pearlMilkTea = PearlMilkTea.LARGE;
PearlMilkTeaTest.drinkSize(pearlMilkTea);
}
//判断为女朋友买哪个杯型的珍珠奶茶
public static void drinkSize(PearlMilkTea pearlMilkTea) {
if (pearlMilkTea == PearlMilkTea.LARGE) {
System.out.println("我为女朋友买了一大杯珍珠奶茶!");
} else if (pearlMilkTea == PearlMilkTea.MEDIUM) {
System.out.println("我为女朋友买了一中杯珍珠奶茶!");
} else