定义枚举,可以使用关键词enum,其中可定义多个符号常量。
enum Div{
EAST,SOUTH,WEST,NORTH;
}
public class Main
{
public static void main(String[] args)
{
Div d=Div.EAST;
switch(d){
case EAST:
System.out.println("东");
break;
case SOUTH :
System.out.println("南");
break;
case WEST :
System.out.println("西");
break;
case NORTH :
System.out.println("北");
break;
}
}
}
枚举可以用于switch语句中,要注意的是case后面的常量只写枚举中的常量即可,如case NORTH 不能写成 case Div.NORTH。
深入用法
Java中的枚举,本质上是用类来实现的,所以它并不是一个整数(这与C++不同)。所以枚举是引用类型。另外,枚举可以定义成员方法及构造方法,也可以实现接口。所有的枚举都是继承了java.lang.Enum类,所以可以覆盖toString()方法,可以使用values()方法来取得所有成员,每个成员都有ordinal()方法得到序号等。
在枚举中定义的常量,本质上是这个类型的实例(更准确地说是它的子类的实例)。所以如果定义了构造方法,可以在定义“枚举常量”时可以用构造方法。要注意的是,cnm中的构造方法必须是private的,以防止在类的外面进行额外的实例化。
enum Div{
EAST("东",1),SOUTH("南",2),WEST("西",3),NORTH("北",4);
private String des;
private int num;
private Div(String des,int num){
this.des=des;
this.num=num;
}
public String getdes(){return des;}
public int getnum(){return num;}
}
public class Main
{
public static void main(String[] args)
{
Div df=Div.NORTH;
System.out.println(df);
for(Div j: Div.values()){
System.out.println(j.getdes()+"*"+j.getnum()+"*"+j.ordinal());
}
}
}
程序中,使用EAST("东",1)等变量,其实上是调用了构造方法来定义"枚举常量"程序为了对values()的结果进行循环,用到了增强的for语句。
运行结果:
NORTH
东*1*0
南*2*1
西*3*2
北*4*3