Java枚举
Java枚举类是一个特殊的类,表示一组常量。枚举可以声明自己的变量、方法和构造函数,但是与普通类不同的是,构造函数只能使用 private 修饰。枚举类可以可以的包含具体方法,也可以包含抽象方法。
一、枚举实例
1、类外实现
话不多说,先上代码:
enum Dir{
Eash,North,South,West;
}
public class Test1 {
public static void main(String[] args) {
Dir E=Dir.Eash;
Dir N=Dir.North;
System.out.println(E+"是东方");
System.out.println(N+"是北方");
}
}
运行结果如下:
Eash是东方
North是北方
2、类内实现
public class Test1 {
enum Dir{
Eash,North,South,West;
}
public static void main(String[] args) {
Dir E=Dir.Eash;
Dir N=Dir.North;
System.out.println(E+"是东方");
System.out.println(N+"是北方");
}
}
结果与上例一致
每个枚举类都是通过Class在内部实现的,所有的枚举值都用 public static final 来修饰的。具体转换如下:
static class Dir{
//其余一致
public static final Dir Eash=new Dir1();
}
二、枚举的使用
1、迭代(加强for循环)枚举元素
直接上代码:
public class Test1 {
enum Dir{
Eash,North,South,West;
}
public static void main(String[] args) {
for(Dir dir:Dir.values()) {
System.out.println(dir);
}
}
}
运行结果如下:
Eash
North
South
West
2、在switch中使用枚举类
直接上代码:
public class Test1 {
enum Dir{
Eash,North,South,West;
}
public static void main(String[] args) {
Dir dir=Dir.Eash;
switch(dir) {
case Eash:
System.out.println("东方");
break;
case North:
System.out.println("北方");
break;
case South:
System.out.println("南方");
break;
case West:
System.out.println("西方");
break;
}
}
}
运行结果是 东方
三、枚举类的三个常用方法
values() ordinal() valueOf()
values():按照定义顺序返回枚举类中所有的值
ordinal():找到每个枚举常量的索引【慎用】
valueOf():可以返回一个枚举常量,若不存在的话会报错
接下来看代码:
public class Test1 {
enum Dir{
Eash,North,South,West;
}
public static void main(String[] args) {
//定义一个数组,将枚举类中的值放入数组
Dir [] arr=Dir.values();
//遍历数组(也可以使用前边提到的迭代)
for(int i=0;i<arr.length;i++) {
System.out.println(arr[i]);
}
System.out.println(Dir.valueOf("Eash"));
}
}
运行结果如下
Eash
North
South
West
Eash