七、枚举
枚举是一个类类型,是JDK1.5的新特性
枚举的关键字是enum
Java中所有的枚举类都是java.lang.Enum的子类
注意:枚举类中可以包含成员有【字段(常量)、方法(构造方法、普通方法)】
枚举中不能有number;不能赋值————类
只有顺序可以比较———–
语法:
enum 枚举名{
枚举体
}
例:
enum Direction{//枚举体
EAST,SOUTH,WEST,NORTH//后面可以有分号也可以没有
}
调用:枚举名.成员
枚举名 name =枚举名.成员;
Direction dir = Direction.EAST;
Enum的方法使用:
Javap—————查看字节码文件
代码:
enum Direction{
EAST(‘e’),SOUTH(’s’),NORTH(‘n’),WEST(‘w’);
protected char a;
private Direction(char a){
this.a = a;
}
public String toString(){
return a+”“;
}
}
字节码:
———- javap ———-
Compiled from “Direction.java”
final class Direction extends java.lang.Enum {//不能被实例化
public static final Direction EAST;
public static final Direction SOUTH;
public static final Direction NORTH;
public static final Direction WEST;
protected char a;//默认是private,但可以使用4P
public static Direction[] values();//默认方法,用来遍历打印枚举成员
public static Direction valueOf(java.lang.String);
public java.lang.String toString();
static {};//静态初始化块
}
由上面可以知道枚举继承java.lang.Enum类,参数的默认修饰符public static final,在枚举中可以使用4p
public enum A{BLUE,RED,BLACK};//声明并定义一个枚举,初始化为。。。
在一个类中定义一个enum成员,enum默认是静态的————-相当于类变量
枚举的用法
一、常量
枚举出来之前都是通过接口
在JDK1.5 之前,我们定义常量都是: public static fianl,现在可以把相关的常量分组到一个枚举类型里,例:
public enum Color {
RED, GREEN, BLANK, YELLOW
}
二、Switch
JDK1.5之后的switch语句支持Byte,short,int,char,enum类型,使用枚举,能让我们的代码可读性更强,JDK1.7之后开始支持String类型,例:
enum Signal {
GREEN, YELLOW, RED
}
public class TrafficLight {
Signal color = Signal.RED;
public void change() {
switch (color) {
case RED:
color = Signal.GREEN;
break;
case YELLOW: