枚举
JDK1.5之后可以定义enum类型
1.枚举常量的使用:
利用枚举来定义 星期一 到 星期日 的常量
public enum MyDay { monday,tuesday,wednesday,thursday,friday,saturday,sunday; //先定义枚举对象 } public class Test { public static void main(String[] args){
//可以直接引用 类名.枚举对象 MyDay myDay = MyDay.friday; MyDay myDay1 = MyDay.monday; MyDay myDay2 = MyDay.saturday; System.out.println(myDay); System.out.println(myDay1); System.out.println(myDay2); } } 输出结果: friday monday saturday
返回类型 | 方法名称 | 方法说明 |
int | compareTo(E o) | 比较此枚举与指定对象的顺序 |
boolean | equals(Object other) | 当指定对象等于此枚举常量时,返回 true。 |
Class<?> | getDeclaringClass() | 返回与此枚举常量的枚举类型相对应的 Class 对象 |
String | name() | 返回此枚举常量的名称,在其枚举声明中对其进行声明 |
int | ordinal() | 返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零) |
String | toString() | 返回枚举常量的名称,它包含在声明中 |
static<T extends Enum<T>> T | static valueOf(Class<T> enumType, String name) | 返回带指定名称的指定枚举类型的枚举常量。 |
2.Enum类常用方法之valueOf(通过给定的name获取对应的枚举对象)
Enum类是枚举类默认继承的类,然后间接继承Object
public enum MyDay { monday,tuesday,wednesday,thursday,friday,saturday,sunday; } import java.util.Scanner; public class Test { public static void main(String[] args){ Scanner input = new Scanner(System.in); System.out.println("请输入一个星期的英文单词:"); String key = input.nextLine(); MyDay myDay = MyDay.valueOf(key);
//枚举的switch 的应用 switch (myDay){ case monday: System.out.println("您输入的是星期1"); break; case tuesday: System.out.println("您输入的是星期2"); break; case wednesday: System.out.println("您输入的是星期3"); break; case thursday: System.out.println("您输入的是星期4"); break; case friday: System.out.println("您输入的是星期5"); break; case saturday: System.out.println("您输入的是星期6"); break; case sunday: System.out.println("您输入的是星期7"); break; default: System.out.println("出现错误"); } } }
3.Enum类常用方法之values(获取全部对象)
public enum MyDay { monday,tuesday,wednesday,thursday,friday,saturday,sunday; } public class Test { public static void main(String[] args){ MyDay myDay = MyDay.friday; //默认间接继承Object //除了Object类的方法 还有一些方法,默认继承Enum MyDay [] myDay1 = MyDay.values();
//利用增强型for循环遍历 for(MyDay myDay2:myDay1){ //name() 获取枚举对象的名字 //ordinal() 获取枚举对象所罗列的顺序 System.out.println(myDay2.name() + "----"+myDay2.ordinal()); } } } 执行结果 monday----0 tuesday----1 wednesday----2 thursday----3 friday----4 saturday----5 sunday----6
4.enum类中可以创建自己的属性和方法:
public enum Day{ //描述了七个当前类的对象 monday("星期一",1),tuesday("星期二",2),wednesday,thursday,friday,saturday,sunday; private String name; private int index; private Day(){} private Day(String name,int index){ this.name=name; this.index=index; } public String getName(){ return this.name; } public void setName(String name){ this.name=name; } }