枚举类型

步骤 1 : 预先定义的常量

枚举enum是一种特殊的类(还是类),使用枚举可以很方便的定义常量

比如设计一个枚举类型 季节,里面有4种常量

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

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

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

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;
}
}
} 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);
}
}
}

练习枚举

(英雄联盟中有这么一些分类:

TANK (坦克)

WIZARD (法师 )

ASSASSIN (刺客)

ASSIST (辅助)

WARRIOR (近战)

RANGED (远程 )

PUSH (推进)

FARMING (打野)

设计一个枚举类型HeroType,使用上述分类作为常量

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

答案

package charactor;

public enum HeroType {
TANK, WIZARD, ASSASSIN, ASSIST, WARRIOR, RANGED, PUSH, FARMING }

.

package charactor;

public class Hero {
public String name; // 姓名 public static void main(String[] args) { HeroType type = HeroType.ASSASSIN;
switch (type) {
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;
}
}
}

最新文章

  1. List去重复(不是最简单,但绝对是最易理解)
  2. 基础框架Fundation和UIkit框架的定义和使用
  3. 【不积跬步,无以致千里】五个常用的Linux监控脚本代码
  4. StopWatch
  5. JavaScript--DOM增删改操作
  6. HashTable 及应用
  7. POJ 1287 Networking(最小生成树)
  8. 文本主题模型之LDA(一) LDA基础
  9. mysql之 innobackupex备份+binlog日志的完全恢复(命令行执行模式)
  10. 实现验证码图像文字的识别(C#调用DLL)
  11. Retrofit 2.0 超能实践,完美支持Https传输
  12. uni-app实现顶部导航栏显示按钮+搜索框
  13. xpath定位动态iframe
  14. Python——模块——时间模块
  15. pc版qq登录及移动版qq登录的申请过程
  16. Clinet/Server在工作线程中刷新页面数据的方法
  17. sql语句语法
  18. LeetCode 965 Univalued Binary Tree 解题报告
  19. xdoj-1106(判断组合数是否溢出)
  20. centos7 安装配置postgresql

热门文章

  1. 极简让ingress-nginx最新版(0.25.0)跑起来
  2. Mybatis JdbcType与Oracle、MySql数据类型对
  3. Chrome调试 ---- 控制台获取元素上绑定的事件信息以及监控事件
  4. $.fn与$.fx什么意思; $.extend与$.fn.extend用法区别; $(function(){})和(function(){})(jQuery)
  5. 前端html页面,手机查看
  6. 前端js判空处理,js字符串判空,js数组判空
  7. ESA2GJK1DH1K升级篇: STM32远程乒乓升级,升级流程源码详细说明
  8. 在Hadoop-3.1.2上安装HBase-2.2.1
  9. 网络协议 16 - DNS 协议
  10. python3 mqtt 添加用户名以及密码