Java枚举(Enum)的默认值

Java中的枚举(Enum)是一种特殊的类型,它允许我们定义一组相关的常量。每个枚举常量都是枚举类型的一个实例。在Java中,枚举默认是有序的,它们的默认值是按照它们在枚举中定义的顺序来分配的。本文将介绍Java枚举的默认值以及如何使用它们。

枚举的定义和使用

在Java中,我们可以使用enum关键字来定义一个枚举类型。下面是一个示例:

public enum Day {
    MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}

在上面的示例中,我们定义了一个名为Day的枚举类型,它包含了一周中的每一天。这些常量MONDAYTUESDAY等都是Day类型的实例。

我们可以使用枚举常量来声明变量并进行赋值,如下所示:

Day today = Day.MONDAY;

上面的代码将today变量声明为Day类型,并将其赋值为Day.MONDAY

枚举的默认值

在Java中,枚举的默认值是按照它们在枚举中定义的顺序来分配的。也就是说,第一个枚举常量的默认值为0,第二个为1,以此类推。例如,对于上面定义的Day枚举,Day.MONDAY的默认值为0,Day.TUESDAY的默认值为1,依此类推。

我们可以通过调用枚举常量的ordinal()方法来获取其默认值。

Day today = Day.MONDAY;
int ordinal = today.ordinal();
System.out.println("Today is day " + ordinal);

上面的代码将输出Today is day 0,因为Day.MONDAY的默认值为0。

需要注意的是,枚举的默认值是从0开始的,如果我们改变了枚举常量的顺序或添加了新的常量,那么默认值也会相应地改变。

示例:使用枚举统计星期几的数量

下面我们来使用枚举来统计一组星期几出现的次数。首先,我们可以定义一个枚举类型Day,表示一周中的每一天:

public enum Day {
    MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}

然后,我们可以编写一个方法来统计一组星期几出现的次数:

import java.util.HashMap;
import java.util.Map;

public class DayCounter {
    
    public static void main(String[] args) {
        Day[] days = {Day.MONDAY, Day.TUESDAY, Day.MONDAY, Day.WEDNESDAY, Day.MONDAY, Day.THURSDAY, Day.FRIDAY, Day.SATURDAY, Day.SUNDAY};
        Map<Day, Integer> countMap = countDays(days);
        for (Map.Entry<Day, Integer> entry : countMap.entrySet()) {
            System.out.println(entry.getKey() + ": " + entry.getValue());
        }
    }
    
    public static Map<Day, Integer> countDays(Day[] days) {
        Map<Day, Integer> countMap = new HashMap<>();
        for (Day day : days) {
            countMap.put(day, countMap.getOrDefault(day, 0) + 1);
        }
        return countMap;
    }
}

上面的代码中,我们定义了一个DayCounter类,并在main方法中创建了一个包含一组星期几的数组。然后,我们调用countDays方法来统计每个星期几出现的次数,并将结果打印出来。

运行上面的代码,将输出如下结果:

MONDAY: 3
TUESDAY: 1
WEDNESDAY: 1
THURSDAY: 1
FRIDAY: 1
SATURDAY: 1
SUNDAY: 1

从上面的输出结果可以看出,Day.MONDAY出现了3次,而其他的星期几只出现了1次。

总结

本文介