欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java自学-类和对象 枚举类型

程序员文章站 2023-11-25 22:19:04
枚举类型 步骤 1 : 预先定义的常量 枚举enum是一种特殊的类(还是类),使用枚举可以很方便的定义常量 比如设计一个枚举类型 季节,里面有4种常量 public enum Season { SPRING,SUMMER,AUTUMN,WINTER } 一个常用的场合就是switch语句中,使用枚举 ......

枚举类型

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