开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第18天,点击查看活动详情
1、写在前面
大家好,今天笔记的内容是:
- 枚举类型
2、内容
2.1、引入
在Java中,我们通常将常量放置在接口中,并且通过static final来定义常量。这样我们在程序中就可以直接使用常量。
比如:
public interface Weekday {
public static final int MON = 1;
public static final int TUE = 2;
public static final int WED = 3;
public static final int THU = 4;
public static final int FRI = 5;
public static final int SAT = 6;
public static final int SUN = 7;
}
而枚举类型是JDK 1.5后引入的新特性,存于java.lang包中,其逐渐取代接口常量的定义方式。
当我们定义一个枚举类型时,每个成员都可以看作是枚举类型的实例,并且默认被final、public、static修饰,可直接使用枚举类型名调用枚举类成员。
2.2、enum 与 class 的区别
枚举类型实际上就是一个类,继承于java.lang.Enum类。enum 与 class基本一样,只不过enum有一些自己的特点:
- 定义的
enum类型总是继承自java.lang.Enum,无法被继承; - 我们无法
new一个enum的实例,只能定义enum实例; - 可以将
enum类用于switch语句。 enum类型的每个实例都是全局唯一的
2.3、声明枚举
声明枚举时必须使用enum关键字,语法如下:
public enum myEnum {
VAL_1,
VAL_2,
Val_3,
...
}
举个例子;
public class Main {
public static void main(String[] args) {
Weekday day = Weekday.SAT;
System.out.println(day); // SAT
}
}
public enum Weekday {
MON, TUE, WED, THU, FRI, SAT, SUN;
}
上述枚举类Weekday的常量有MON,TUE,WED,THU,FRI,SAT,SUN,分别表示星期一、星期二、星期三、星期四、星期五、星期六、星期天。
2.4、enum 的常用方法
以枚举类型Weekday为例,记录enum 的常用方法。
public enum Weekday {
MON, TUE, WED, THU, FRI, SAT, SUN;
}
values()
values()方法用于返回枚举类型中的所有成员。也就是将枚举类型中所有的枚举值以数组的形式返回。
比如:
public class Main {
public static void main(String[] args) {
for(Month m : Month.values()) {
System.out.print(m + " ");
}
}
}
enum Month {
January, February, March, April, May, June, July, August, September, October, November, December
}
运行结果:
January February March April May June July August September October November December
valueOf()
valueOf()方法将普通字符串转换为枚举实例,也就是返回指定字符串值的枚举常量。
比如:
public class Main {
public static void main(String[] args) {
System.out.println(Month.valueOf("January"));
}
}
enum Month {
January, February, March, April, May, June, July, August, September, October, November, December
}
运行结果:
January
compareTo()
compareTo()方法用于比较两个枚举类型对象定义时的顺序。
举个例子:
public class myEnum {
public static void main(String[] args) {
Season MyFavorite = Season.valueOf("AUTUMN"); // 根据指定字符串创建一个枚举值
Season[] SeasonArr = Season.values();
for(int i = 0; i<SeasonArr.length; i++) {
String mes = "";
int ans = MyFavorite.compareTo(SeasonArr[i]);
if (ans < 0) {
mes = MyFavorite + " 在 " + SeasonArr[i] + " 的前 " + (-ans) + " 个位置";
} else if (ans > 0) {
mes = MyFavorite + " 在 " + SeasonArr[i] + " 的后 " + ans + " 个位置";
} else {
mes = "我最喜欢的季节就是:" + SeasonArr[i];
}
System.out.println(mes);
}
}
}
// 一年四季
enum Season {
SPRING, SUMMER, AUTUMN, WINTER
}
写在最后
好了,文章的内容就到这里,感谢观看。