目录
1、什么是枚举?
枚举是一个被命名的整型常数的集合,用于声明一组带标识符的常数,枚举在日常生活中很常见,例如表示星期的SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY、SATURDAY就是一个枚举。引用于百度百科。
2、枚举格式
声明枚举时必须使用 enum 关键字
public enum 枚举类名(){
枚举项1,枚举项2,枚举项3,枚举4。。。;
}
3、枚举书写的三种形式
3.1、第一种(普通参数)
任意两个枚举成员不能具有相同的名称,且它的常数值必须在该枚举的基础类型的范围之内,多个枚举成员之间使用逗号分隔。
public enum Demo {
/* 通过JDK5提供的枚举来做枚举类*/
LEFT,RIGHT,FRONT,BEHIND;
}
public class Test {
public static void main(String[] args) {
Demo d=Demo.BEHIND;
System.out.println(d);//BEHIND
}
}
3.2、第二种(构造方法赋初始值)
public enum Demo {
/* 通过JDK5提供的枚举来做枚举类*/
LEFT("左"),RIGHT("右"),FRONT("前"),BEHIND("后");
private String name;
Demo(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
public class Test {
public static void main(String[] args) {
Demo d=Demo.BEHIND;
System.out.println(d);//BEHIND
System.out.println("-------------------");
String name = Demo.BEHIND.getName();
System.out.println(name);//后
String name1 = Demo.FRONT.getName();
System.out.println(name1); //前
}
}
3.3、第三种(重写抽象方法)
public enum Demo1 {
LEFT{
@Override
public void show() {
System.out.println("左:重写了show方法");
}
},RIGHT{
@Override
public void show() {
System.out.println("右:重写了show方法");
}
},FRONT{
@Override
public void show() {
System.out.println("前:重写了show方法");
}
},BEHIND{
@Override
public void show() {
System.out.println("后:重写了show方法");
}
};
public abstract void show();
}
public class Test {
public static void main(String[] args) {
Demo d=Demo.BEHIND;
System.out.println(d);//BEHIND
System.out.println("-------------------");
String name = Demo.BEHIND.getName();
System.out.println(name);
String name1 = Demo.FRONT.getName();
System.out.println(name1);
System.out.println("-------------------");
Demo1 d1=Demo1.RIGHT;
d1.show();//右:重写了show方法
Demo1 d2=Demo1.BEHIND;
d2.show();//后:重写了show方法
}
}
4、枚举常用方法
方法名 | 说明 |
---|---|
values() | 以数组形式返回枚举类型的所有成员 |
valueOf() | 将普通字符串转换为枚举实例 |
compareTo() | 比较两个枚举成员在定义时的顺序 |
ordinal() | 获取枚举成员的索引位置 |
name() | 返回当前对象名(常量名),子类中不能重写 |
toString() | 返回的是当前对象名;子类可以重写该方法,用于返回对象的属性信息 |
public class Test2 {
public static void main(String[] args) {
//将字符串转换成已有的枚举对象,要求字符串必须为枚举中存在的常量,否则报异常!
Demo s1 = Demo.valueOf("RIGHT");
Demo s2 = Demo.valueOf("LEFT");
System.out.println(s1);//RIGHT
System.out.println("-----------------");
String ss = s1.toString();
System.out.println(s1);//RIGHT
System.out.println("-----------------");
//返回当前枚举类中所有的常量对象
Demo[] values = Demo.values();
//遍历枚举数组
for (Demo value : values) {
System.out.println(value);
}
System.out.println("-----------------");
//返回当前对象名(常量名),子类中不能重写
int ordinal = s1.ordinal();
System.out.println(ordinal);
System.out.println("-----------------");
//比较两个枚举常量的大小(编号),返回的结果是两个枚举常量的编号相减得到的数
int i = s1.compareTo(s2);
System.out.println(i);
}
}