1、介绍
package level2.myEnum;
import java.lang.Enum;
public class MyEnum {
public static void main(String[] args) {
System.out.println(Season.SPRING.showDescription());
System.out.println(Season.SUMMER.showDescription());
System.out.println(Season.AUTUMN.showDescription());
System.out.println(Season.WINTER.showDescription());
System.out.println(Season01.SPRING.showDescription());
System.out.println(Season01.SUMMER.showDescription());
System.out.println(Season01.AUTUMN.showDescription());
System.out.println(Season01.WINTER.showDescription());
}
}
// 1. 自定义枚举实现
class Season{
private String name;
private String description;
public static final Season SPRING = new Season("春天", "温暖");
public static final Season SUMMER = new Season("夏天", "炎热");
public static final Season AUTUMN = new Season("秋天", "凉爽");
public static final Season WINTER = new Season("冬天", "寒冷");
public String showDescription(){
return this.getName() + " " + this.getDescription();
}
private Season(String name, String description) {
this.name = name;
this.description = description;
}
public String getName() {
return name;
}
public String getDescription() {
return description;
}
}
// 2、enum关键字实现枚举
enum Season01{
// 使用enum实现枚举类
// 1、public static final Season SPRING = new Season("春天", "温暖") 直接使用
// SPRING("春天", "温暖") --> 常量名(实参列表)
// 2、如果有多个常量(对象), 用逗号 , 间隔
// 3、如果使用enum实现枚举,要求将定义常量对象,写在最前边
// 4、语句结束,使用 ; 号
SPRING("春天", "温暖"),SUMMER("夏天", "炎热"),
AUTUMN("秋天", "凉爽"),WINTER("冬天", "寒冷"),
OTHER(); // 调用无参构造器
private String name;
private String description;
public String showDescription(){
return this.getName() + " " + this.getDescription();
}
private Season01() {
}
private Season01(String name, String description) {
this.name = name;
this.description = description;
}
public String getName() {
return name;
}
public String getDescription() {
return description;
}
}
2、方法
package level2.myEnum;
public class EnumMethod {
public static void main(String[] args) {
Season02 summer = Season02.SUMMER;
// 1. name:输出枚举对象的名称/引用名 (注意 不是构造器中的name参数)
System.out.println(summer.name());
// 2. ordinal:输出该枚举对象的次序/编号,编号从0开始
System.out.println(summer.ordinal());
// 3. values:返回一个数组,该数组含有所有定义的枚举对象
Season02[] values = Season02.values();
for(Season02 seasons:values){ // 依次从数组中取出元素,赋值给seasons,若已经取完,则退出for
System.out.println(seasons);
}
// 4. valueOf:将字符串转换成枚举类型,要求字符串必须是已有的常量名,否则报异常
// 根据输入的字符串 "SPRING" 到 Season02 的枚举对象中查找
// 找到就返回对象,找不到就报错
Season02 spring = Season02.valueOf("SPRING");
System.out.println(spring);
// 4. compareTo:比较两个枚举常量,比较的是对象的编号
// 返回int: Season02.SUMMER编号 - Season02.WINTER编号
System.out.println(Season02.SUMMER.compareTo(Season02.WINTER));
}
}
enum Season02{
SPRING("春天", "温暖"),SUMMER("夏天", "炎热"),
AUTUMN("秋天", "凉爽"),WINTER("冬天", "寒冷");
private String name;
private String description;
public String showDescription(){
return this.getName() + " " + this.getDescription();
}
private Season02(String name, String description) {
this.name = name;
this.description = description;
}
public String getName() {
return name;
}
public String getDescription() {
return description;
}
}



