Java枚举类如何使用

发布时间:2022-07-30 14:29:35 作者:iii
来源:亿速云 阅读:125

Java枚举类如何使用

1. 枚举类简介

枚举(Enum)是Java 5引入的一种特殊的数据类型,它允许我们定义一组固定的常量。枚举类在Java中是一种特殊的类,它可以包含字段、方法、构造函数等,但它的实例是预定义的、有限的。

枚举类的主要用途是表示一组固定的常量,例如星期、月份、颜色等。使用枚举类可以提高代码的可读性和安全性,避免使用魔法数字或字符串。

2. 枚举类的定义

枚举类的定义与普通类的定义类似,但使用enum关键字代替class关键字。枚举类的实例是预定义的,通常使用大写字母表示。

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

在上面的例子中,Day是一个枚举类,它包含七个预定义的实例:MONDAYTUESDAYWEDNESDAYTHURSDAYFRIDAYSATURDAYSUNDAY

3. 枚举类的使用

3.1 基本使用

枚举类的实例可以直接使用,例如:

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

输出结果为:

Today is MONDAY

3.2 枚举类的字段和方法

枚举类可以包含字段和方法,例如:

public enum Day {
    MONDAY("星期一"),
    TUESDAY("星期二"),
    WEDNESDAY("星期三"),
    THURSDAY("星期四"),
    FRIDAY("星期五"),
    SATURDAY("星期六"),
    SUNDAY("星期日");

    private final String chineseName;

    Day(String chineseName) {
        this.chineseName = chineseName;
    }

    public String getChineseName() {
        return chineseName;
    }
}

在上面的例子中,Day枚举类包含一个字段chineseName和一个方法getChineseName()。每个枚举实例都有一个对应的中文名称。

使用示例:

Day today = Day.MONDAY;
System.out.println("Today is " + today.getChineseName());

输出结果为:

Today is 星期一

3.3 枚举类的构造函数

枚举类可以包含构造函数,但构造函数的访问修饰符必须是private或默认的(即不写访问修饰符)。枚举类的构造函数在枚举实例创建时自动调用。

public enum Day {
    MONDAY("星期一", 1),
    TUESDAY("星期二", 2),
    WEDNESDAY("星期三", 3),
    THURSDAY("星期四", 4),
    FRIDAY("星期五", 5),
    SATURDAY("星期六", 6),
    SUNDAY("星期日", 7);

    private final String chineseName;
    private final int dayNumber;

    Day(String chineseName, int dayNumber) {
        this.chineseName = chineseName;
        this.dayNumber = dayNumber;
    }

    public String getChineseName() {
        return chineseName;
    }

    public int getDayNumber() {
        return dayNumber;
    }
}

在上面的例子中,Day枚举类的构造函数接受两个参数:chineseNamedayNumber

使用示例:

Day today = Day.MONDAY;
System.out.println("Today is " + today.getChineseName() + ", day number is " + today.getDayNumber());

输出结果为:

Today is 星期一, day number is 1

3.4 枚举类的静态方法

枚举类可以包含静态方法,例如:

public enum Day {
    MONDAY("星期一", 1),
    TUESDAY("星期二", 2),
    WEDNESDAY("星期三", 3),
    THURSDAY("星期四", 4),
    FRIDAY("星期五", 5),
    SATURDAY("星期六", 6),
    SUNDAY("星期日", 7);

    private final String chineseName;
    private final int dayNumber;

    Day(String chineseName, int dayNumber) {
        this.chineseName = chineseName;
        this.dayNumber = dayNumber;
    }

    public String getChineseName() {
        return chineseName;
    }

    public int getDayNumber() {
        return dayNumber;
    }

    public static Day getDayByNumber(int dayNumber) {
        for (Day day : Day.values()) {
            if (day.getDayNumber() == dayNumber) {
                return day;
            }
        }
        throw new IllegalArgumentException("Invalid day number: " + dayNumber);
    }
}

在上面的例子中,Day枚举类包含一个静态方法getDayByNumber(),它根据dayNumber返回对应的Day实例。

使用示例:

Day day = Day.getDayByNumber(3);
System.out.println("Day is " + day.getChineseName());

输出结果为:

Day is 星期三

3.5 枚举类的values()valueOf()方法

枚举类自动提供了两个静态方法:values()valueOf()

使用示例:

Day[] days = Day.values();
for (Day day : days) {
    System.out.println(day);
}

Day day = Day.valueOf("MONDAY");
System.out.println("Day is " + day.getChineseName());

输出结果为:

MONDAY
TUESDAY
WEDNESDAY
THURSDAY
FRIDAY
SATURDAY
SUNDAY
Day is 星期一

3.6 枚举类的switch语句

枚举类可以与switch语句一起使用,例如:

Day today = Day.MONDAY;

switch (today) {
    case MONDAY:
        System.out.println("Today is Monday");
        break;
    case TUESDAY:
        System.out.println("Today is Tuesday");
        break;
    case WEDNESDAY:
        System.out.println("Today is Wednesday");
        break;
    case THURSDAY:
        System.out.println("Today is Thursday");
        break;
    case FRIDAY:
        System.out.println("Today is Friday");
        break;
    case SATURDAY:
        System.out.println("Today is Saturday");
        break;
    case SUNDAY:
        System.out.println("Today is Sunday");
        break;
    default:
        System.out.println("Invalid day");
}

输出结果为:

Today is Monday

3.7 枚举类的compareTo()方法

枚举类实现了Comparable接口,因此可以使用compareTo()方法比较两个枚举实例的顺序。

Day day1 = Day.MONDAY;
Day day2 = Day.WEDNESDAY;

int result = day1.compareTo(day2);
if (result < 0) {
    System.out.println(day1 + " comes before " + day2);
} else if (result > 0) {
    System.out.println(day1 + " comes after " + day2);
} else {
    System.out.println(day1 + " is the same as " + day2);
}

输出结果为:

MONDAY comes before WEDNESDAY

3.8 枚举类的ordinal()方法

枚举类的每个实例都有一个ordinal()方法,它返回该实例在枚举类中的位置(从0开始)。

Day day = Day.WEDNESDAY;
System.out.println(day + " has ordinal " + day.ordinal());

输出结果为:

WEDNESDAY has ordinal 2

3.9 枚举类的name()方法

枚举类的每个实例都有一个name()方法,它返回该实例的名称。

Day day = Day.WEDNESDAY;
System.out.println(day + " has name " + day.name());

输出结果为:

WEDNESDAY has name WEDNESDAY

3.10 枚举类的toString()方法

枚举类的每个实例都有一个toString()方法,它返回该实例的名称。默认情况下,toString()方法与name()方法的行为相同,但可以重写toString()方法以返回自定义的字符串。

public enum Day {
    MONDAY("星期一"),
    TUESDAY("星期二"),
    WEDNESDAY("星期三"),
    THURSDAY("星期四"),
    FRIDAY("星期五"),
    SATURDAY("星期六"),
    SUNDAY("星期日");

    private final String chineseName;

    Day(String chineseName) {
        this.chineseName = chineseName;
    }

    @Override
    public String toString() {
        return chineseName;
    }
}

使用示例:

Day day = Day.WEDNESDAY;
System.out.println(day);

输出结果为:

星期三

4. 枚举类的应用场景

枚举类适用于以下场景:

5. 总结

枚举类是Java中一种特殊的类,它允许我们定义一组固定的常量。枚举类可以提高代码的可读性和安全性,避免使用魔法数字或字符串。枚举类可以包含字段、方法、构造函数等,并且可以与switch语句、compareTo()方法等一起使用。枚举类适用于表示一组固定的常量,并且可以为常量添加额外的字段或方法。

推荐阅读:
  1. java枚举类的使用介绍
  2. Java中枚举类型的定义和使用

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java

上一篇:Java反射机制的知识点有哪些

下一篇:joiplay模拟器如何调中文

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》