how2j.cn

本视频是解读性视频,所以希望您已经看过了本知识点的内容,并且编写了相应的代码之后,带着疑问来观看,这样收获才多。 不建议一开始就观看视频



5分15秒
本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)



步骤 1 : 预先定义的常量   
步骤 2 : 使用枚举的好处   
步骤 3 : 遍历枚举   
步骤 4 : 练习-枚举   
步骤 5 : 答案-枚举   

步骤 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; } } }
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); } } }
public class HelloWorld {
	public static void main(String[] args) {
		for (Season s : Season.values()) {
			System.out.println(s);
		}
	}
}
步骤 4 :

练习-枚举

Or  姿势不对,事倍功半! 点击查看做练习的正确姿势
英雄联盟中有这么一些分类
TANK (坦克)
WIZARD (法师 )
ASSASSIN (刺客)
ASSIST (辅助)
WARRIOR (近战)
RANGED (远程 )
PUSH (推进)
FARMING (打野)
设计一个枚举类型HeroType,使用上述分类作为常量

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

答案-枚举

在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
本视频是解读性视频,所以希望您已经看过了本答案的内容,带着疑问来观看,这样收获才多。 不建议一开始就观看视频

2分12秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)


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


HOW2J公众号,关注后实时获知布最新的教程和优惠活动,谢谢。


问答区域    
2019-01-15 感觉枚举没啥用啊
lanz



public static void main(String[] args) { HeroType ht=HeroType.TANK; switch (ht){ case TANK: System.out.println("坦克"); case WIZARD: System.out.println("法师"); case ASSASSIN: System.out.println("刺客"); case ASSIST: System.out.println("辅助"); case WARRIOR: System.out.println("近战"); case RANGED: System.out.println("远程"); case PUSH: System.out.println("推进"); case FARMING: System.out.println("打野"); default:break; } }
   public static void main(String[] args) {
        HeroType ht=HeroType.TANK;
        switch (ht){
            case TANK:
                System.out.println("坦克");
            case WIZARD:
                System.out.println("法师");
            case ASSASSIN:
                System.out.println("刺客");
            case ASSIST:
                System.out.println("辅助");
            case WARRIOR:
                System.out.println("近战");
            case RANGED:
                System.out.println("远程");
            case PUSH:
                System.out.println("推进");
            case FARMING:
                System.out.println("打野");
            default:break;

        }
        
    }

							






答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2019-01-05 作业,遍历输出加中文
aa15841738548



如题
package charactor;

public class HeroTypeTest {
	public static void main(String[] args) {
		
	
	   HeroType type = HeroType.PUSH;
	   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;
	   
	   }
	  for (HeroType w : HeroType.values()) {
		  System.out.println(w);
		
	}
	   
        System.out.println();
}
}  

							






答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2019-01-03 交作业
2018-12-13 枚举
2018-12-07 枚举!
2018-11-20 有枚举类型就不能运行
2018-11-07 交作业
2018-11-06 封装思想
2018-09-27 Season season = Season.SPRING这一句是做什么的
2018-09-05 打印
2018-09-05 交作业
2018-08-28 按在地上摩擦~
2018-08-26 作业
2018-08-15 打卡
2018-08-08 作业
2018-07-24 交作业
2018-07-21 交作业
2018-07-16 ASSASSIN是随便取的吗?
2018-07-09 作业
2018-06-09 作业
2018-06-04 枚举
2018-06-01 交作业呀交作业
2018-05-29 交作业
2018-05-19 交作业
2018-05-19 交作业
2018-05-16 交作业
2018-05-08 作业
2018-03-27 HeroType type = HeroType.ASSASSIN;不懂这句话
2017-12-10 可是,我要怎么用这个枚举型呢?
2017-12-06 还有什么方法能遍历枚举类啊
2017-12-03 交作业
2017-11-19 答案有一句是多余的吗
2017-10-13 Season season = Season.SPRING;这行什么意思?
2017-10-11 报错
2017-07-12 作业
2017-06-30 枚举练习
2017-04-25 遍历并输出中文
2016-07-01 这答案是上一个问题的吗?




提问之前请登陆
关于 JAVA 基础-类和对象-枚举类型 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 902680467
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: http://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图