259、Java基础36 - 类和对象【枚举类型】 2019.11.16

62 篇文章 0 订阅
1 篇文章 0 订阅

1、枚举类型

预先定义的常量
枚举enum是一种特殊的类(还是类),使用枚举可以很方便的定义常量
比如设计一个枚举类型 季节,里面有4种常量

public enum Season {
	SPRING,SUMMER,AUTUMN,WINTER
}

一个常用的场合就是switch语句中,使用枚举来进行判断

注:因为是常量,所以一般都是全大写

  • HelloWorld.java
public class HelloWorld {
    public static void main(String[] args) {
        Season season = Season.SPRING;
        switch (season) {
        case SPRING: // 常量,一般都要大写
            System.out.println("春天");
            break;
        case SUMMER:
            System.out.println("夏天");
            break;
        case AUTUMN:
            System.out.println("秋天");
            break;
        case WINTER:
            System.out.println("冬天");
            break;
        }
    }
}
  • Season.java
public enum Season {
    SPRING,SUMMER,AUTUMN,WINTER
}

2、使用枚举的好处

假设在使用switch的时候,不是使用枚举,而是使用int,而int的取值范围就不只是1-4,有可能取一个超出1-4之间的值,这样判断结果就似是而非了。(因为只有4个季节)

但是使用枚举,就能把范围死死的限定在这四个当中

SPRING,SUMMER,AUTUMN,WINTER

而不会出现奇怪的 第5季

public class HelloWorld {
    public static void main(String[] args) {
        int season = 5;
        switch (season) {
        case 1:
            System.out.println("春天");
            break;
        case 2:
            System.out.println("夏天");
            break;
        case 3:
            System.out.println("秋天");
            break;
        case 4:
            System.out.println("冬天");
            break;
        }
    }
}

3、遍历枚举

  • 借助增强型for循环,可以很方便的遍历一个枚举都有哪些常量
public class HelloWorld {
    public static void main(String[] args) {
        for (Season s : Season.values()) {
            System.out.println(s);
        }
    }
}

4、练习:枚举

英雄联盟中有这么一些分类
TANK (坦克)
WIZARD (法师 )
ASSASSIN (刺客)
ASSIST (辅助)
WARRIOR (近战)
RANGED (远程 )
PUSH (推进)
FARMING (打野)
设计一个枚举类型HeroType,使用上述分类作为常量

再编写一段switch语句,把每种枚举常量输出为中文字符串

public class MeiJu
{
    public enum HeroType{
        TANK,
        WIZARD,
        ASSASSIN,
        ASSIST,
        WARRIOR,
        RANGED,
        PUSH,
        FARMING,
    }
    public static void main(String args[]){

       for (HeroType he : HeroType.values()){
           switch (he) {

               case TANK:
                   System.out.println("坦克");
                   break;
               case WIZARD:
                   System.out.println("法师");
                   break;
               case ASSASSIN:
                   System.out.println("刺客");
                   break;
               case ASSIST:
                   System.out.println("辅助");
                   break;
               case WARRIOR:
                   System.out.println("近战");
                   break;
               case RANGED:
                   System.out.println("远程");
                   break;
               case PUSH:
                   System.out.println("推进");
                   break;
               case FARMING:
                   System.out.println("打野");
                   break;

             }
           }
       }

    }

5、参考链接

[01] How2j - 类和对象系列教材 (十三)- 枚举类型

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值