9、枚举
# 枚举(enum)
Java 枚举是一个特殊的类,它可以用来表示一组常量。
枚举使用enum
表示
语法:
public enum Season {
SPRING, AUTUMN, SUMMER, WINTER
}
枚举类Season
表示两个季节的常量。
使用枚举:
class Test{
public static void main(String[] args) {
Season season = Season.SPRING;
System.out.println(season);
}
}
输出:
SPRING
可以看到枚举的使用 是 Season season = Season.SPRING;
,而不是 new
之前说到static也可以表示一个常态变量:
public class Season {
public static final String = "SPRING";
}
那枚举和static变量有什么区别呢?
枚举类编译后默认为final class,而且枚举常量不会占用对象的存储空间,编译后全都是常量,枚举表示了在定义好的集合里匹配。
而且还有一个好处:
eg:
public enum Season {
SPRING(1, "春天"), SUMMER(3, "夏天"), AUTUMN(5, "秋天"), WINTER(9, "冬天");
private int index;
private String name;
Season(int index, String name) {
this.index = index;
this.name = name;
}
}
枚举类可以绑定多个值,还可以有构造方法。
有点像我们平时创建一般实体类,就是不能实例化这个枚举类。
# 枚举类的API:
- values() 返回枚举类中所有的值。
- ordinal()方法可以找到每个枚举常量的索引,就像数组索引一样。
- valueOf()方法返回指定字符串值的枚举常量。
eg:
public enum Season {
SPRING(1, "春天"), SUMMER(3, "夏天"), AUTUMN(5, "秋天"), WINTER(9, "冬天");
private int index;
private String name;
Season(int index, String name) {
this.index = index;
this.name = name;
}
public int getIndex() {
return index;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "索引:" + getIndex() + ",值:" + getName();
}
}
class Test {
public static void main(String[] args) {
for (Season season : Season.values()) {
System.out.println(season);
}
System.out.println("------------------");
System.out.println(Season.valueOf("WINTER"));
}
}
输出:
索引:1,值:春天
索引:3,值:夏天
索引:5,值:秋天
索引:9,值:冬天
------------------
索引:9,值:冬天
System.out.println(season);
默认省略了toString()
方法,其实就是System.out.println(season.toString());
枚举也是类,所有的父类都是Object
,toString()
是Object
的API,这里重写了toString()
方法,所以会调用子类的方法。
上次更新: 2025-02-21 06:04:57