JAVA枚举类型

百度百科

首先我们通过百度百科来了解一下JAVA的枚举类型。

枚举型是四种基本数据类型之一。常量、字符型、布尔型可以用来表达数,字符,真假的描述。但我们还是觉得有点缺欠:它们不能方便地进行一些标识符的描述,如:红,橙,黄,绿,青,蓝,紫七种颜色,要在数据类型中要把它们直接表达出来,我们觉得有障碍。而在计算机内有没有这种数据类型,能够很方便地将它们表示出来?有,枚举型能办到。用四种基本数据类型不便表示的标识符,而且这些标识符的数量是有限的,我们可以用枚举的方法来表达它,把要用的所有标识符全部枚举出来。这种方法比较接近自然语言的表达。

简单来说枚举就是可以定义一些固定值的一种类型,那么有同学会问了,我们用final也可以实现固定值的效果啊。那我们就继续让下看(枚举类型的源码就是用final来实现的,也为我们提供了一些便利);

枚举的语法

定义:
[修饰符] enum 枚举名{
	枚举值1,枚举值2,枚举值3,...;
}
使用:
枚举名.枚举值

例:
public enum Sex {
   MAN,WOMAN;
}
例:
Sex.MAN

枚举的底层

把枚举对应的源文件通过javac 命令进行编辑(Sex.java),那么就会产生一个字节码文件,生成一个Sex.class的class文件。再通过javap Sex进行反编译

Compiled from "Sex.java"
 public final class com.ymf.springboot.Sex extends java.lang.Enum<com.ymf.springboot.Sex> {
   public static final com.ymf.springboot.Sex MAN;
   public static final com.ymf.springboot.Sex WOMAN;
   public static com.ymf.springboot.Sex[] values();
   public static com.ymf.springboot.Sex valueOf(java.lang.String);
   static {};
 }

枚举的本质就是一个使用final的修饰类,并且继承了"java.lang.Enum"这个类

1.首先我们应该知道final修饰的类是不可以被继承

2.“java.lang.Enum” 是所有枚举类的老祖宗

3.枚举值就是对应枚举类型的实例,并且默认使用了"public static final"来修饰,也就意味着枚举值就是一个枚举类型的"全局静态常量"

所有我们使用枚举类型的时候要使用类名带上属性名了;

4.我们对应枚举值一个常用静态的方法 values()

public static com.ymf.springboot.Sex[] values();
看名字可想而知就是 返回该枚举类型中定义的所有枚举值

枚举的使用场合

场合:对于一些固定值的描述,那么就可以使用枚举来实现

例如:描述"性别"、“春夏秋冬”、"每一周的星期几"等等

枚举在switch中的使用

注意:在switch选择结构中,case后面的枚举值省略"枚举名字"来操作

@Test
public void test(){
    Sex sex = Sex.MAN;
    switch (sex){
        case MAN:
       			 break;
        case WOMAN:
        		 break;		
    }
}
//可以省略default
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

假女吖☌

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

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

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

打赏作者

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

抵扣说明:

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

余额充值