枚举类
- 一个类中有个数有限且固定的对象
- 通过类名字直接访问对象
- private构造方法; public static final属性 = new 对象/常量
- JDK1.5版本之后可以直接定义enum类型
- 定义的枚举类直接继承Enum类(不允许继承其他的类),间接继承Object类
Enum
两个属性:
name:表示当前枚举对象的名字
ordinal:枚举对象在类中的顺序(从0开始)
常用方法:
valueof():通过给定的name获取对应的枚举对象
values():获取全部枚举对象----->返回一个枚举类型数组
compareTo():可以比较两个枚举对象
toString():没有final修饰,可以重写
MyDay.java
package myenum;
public class MyDay {
//类似于单例
//私有的构造方法
private MyDay(){}
//所有对象都是属性
public static final MyDay monday = new MyDay();
public static final MyDay tuesday = new MyDay();
public static final MyDay wednesday = new MyDay();
public static final MyDay thursday = new MyDay();
public static final MyDay friday = new MyDay();
public static final MyDay saturday = new MyDay();
public static final MyDay sunday = new MyDay();
}
Day.java
package myenum;
public enum Day {
//相当于描述了7个当前类的对象
monday,tuesday,wednesday,thursday,friday,saturday,sunday
}
Test.java
package myenum;
public class Test {
public static void main(String[] args){
MyDay myday = MyDay.friday;//myday类中访问一个对象 7个
Day day = Day.monday;//day相当于枚举类型的对象
Day[] days = Day.values();//获取所有枚举对象
for(Day d:days){
System.out.println(d.name()+"----"+d.ordinal());
}
}
}
在switch中使用枚举
package myenum;
import java.util.Scanner;
public class Test1 {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.println("请您输入一个星期的英文单词");
String key = input.nextLine();
Day day = Day.valueOf(key);
switch (day){
case monday:
System.out.println("今天是星期一");
break;
case tuesday:
System.out.println("今天是星期二");
break;
case wednesday:
System.out.println("今天是星期三");
break;
case thursday:
System.out.println("今天是星期四");
break;
case friday:
System.out.println("今天是星期五");
break;
case saturday:
System.out.println("今天是星期六");
break;
case sunday:
System.out.println("今天是星期日");
break;
default:
System.out.println("出现错误");
}
}
}
可以在enum类中描述一下自己的属性或者方法
必须在第一行描述枚举的样子
必须提供带有private的构造方法(可以重载)
package myenum;
public enum Day {
//相当于描述了7个当前类的对象
monday("星期一",0),tuesday,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;
}
}