简单了解java枚举

枚举

  • 什么时枚举?

    在java语言中,枚举是一种数据类型,枚举用来表示固定的且仅有几种取值范围的数据

    比如:性别

  • 枚举有啥用?

    当程序中有数据是固定且只有几种取值范围的时候,使用枚举类型强制设置值的范围

    示例:

    public interface Gender{
        public static final String Boy = "男";
        public static final String Girl = "女";
    }
    
    public class Person{
        private String name;
        private String sex;
        
        public Person(String name, String sex){
            this.name = name;
            this.sex = sex;
    	}
    }
    
    //当我们创建一个Person对象并为它赋值相应的属性时会出现
    Person per = new Person("坤坤", "又男又女");
    

    显然这样写(为per赋值属性)是不太符合我们的常理的,但是程序不会帮我们纠正此错误,而是会正常运行。那我们如何解决此问题嘞,请接着看吧。

  • 枚举怎么使用?
    public enum 枚举的名字{
        固定选项值1,固定选项值2,...固定选项值n;
    }
    

    基于上示例,我们来看看如何解决刚才出现的问题:

    public enum Gender{
        Boy, Girl;
    }
    
    public class Person{
        private String name;
        private Gender sex;//使用枚举类型
        
        public Person(String name, String sex){
            this.name = name;
            this.sex = sex;
    	}
    }
    
    //创建Person对象并为其相应属性赋值
    Person per = new Person("坤坤", "又男又女");//此时程序报错,原因就是我们使用了枚举类型,限制了性别类型必须是Gender枚举
    
    Person per1 = new Person("坤坤", Gender.Boy);//此时程序正确
    

    由此我们看出,枚举可以保障数据的合法有效性。

  • 我们可以结合switch和枚举来实现一个小案例,加深对枚举的使用印象

    案例:交通信号灯又固定的三种颜色:红、绿、黄。判断灯的颜色,输出灯的颜色。

    • 信号灯枚举

      public enum Signal {
          //取值范围
          RED, GREEN, YELLOW;
      }
      
    • 设置Test类测试

      public class Test {
          public static void change(Signal signal){
              switch (signal){
                  case RED:
                      System.out.println("此时是红灯");
                      break;
                  case GREEN:
                      System.out.println("此时是绿灯");
                      break;
                  case YELLOW:
                      System.out.println("此时是黄灯");
                      break;
              }
          }
      
          public static void main(String[] args) {
              change(Signal.RED);
          }
      }
      
  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值