为什么要学习枚举?
什么是枚举?
枚举指的是在一定范围内取值,这个值必须是枚举类型中的任意一个,而且只能够取其中一个
枚举的特点:
1.枚举的本质就是构造方法私有的Java类
2.switch语句可以使用枚举类型
3.枚举的取值范围必须是规定范围内取值,并且只能够取范围内的其中一个
4.枚举的常量成员必须是枚举体中的第一句
5.如果枚举中除了常量成员还有其他成员的话,必须加上分号,没有可以省略
6.枚举类型所有构造方法必须私有
7.枚举中可以有构造方法,成员方法,静态方法,成员变量,抽象方法
其他的都没什么用,只有抽象方法有一点意义
枚举的常用方法:
枚举的常用方法
类<E> getDeclaringClass() 返回与此枚举常量的枚举类型相对应的Class对象
String name() 返回此枚举常量的名称
int ordinal() 返回此枚举常数的序数(其枚举声明中的位置,其中初始常数的序数为零)。
static <T extends Enum<T>> T valueOf(类<T> enumType, String name) 返回具有指定名称的指定枚举类型的枚举常量。
static Enum valueOf(String name)
static values
实现枚举对象/枚举名称/枚举下标之间的相互转换
枚举的应用
1.使用在switch中
2.在集合中
package com.sxt.file;
public class EnumDemo01 {
public static void main(String[] args) {
//int state = 5;
//Game2 state = Game2.RUNNING;
//Game3 state = Game3.OVER;
Game4 state = Game4.START;
switch (state) {
case START:
System.out.println("游戏开始");
break;
case OVER:
System.out.println("游戏结束");
break;
case RUNNING:
System.out.println("游戏运行");
break;
default:
break;
}
}
}
// 版本一
class Game {
public static final int START = 1;
public static final int OVER = 2;
public static final int RUNNING = 3;
}
//版本二
class Game2 {
public static final Game2 START = new Game2();
public static final Game2 OVER = new Game2();
public static final Game2 RUNNING = new Game2();
}
//版本三
class