java枚举是什么

Java枚举(Enum)是Java编程语言中一种特殊的类,用于表示一组固定的常量值,枚举提供了一种类型安全的方式来定义一组预定义的常量,这些常量可以用于表示一组有限的可能性,枚举在Java中被广泛使用,特别是在需要表示一组固定的选项或状态时,例如星期、月份、颜色等。

枚举的定义与使用

1、枚举的定义

java枚举是什么

在Java中,枚举是通过关键字enum来定义的,枚举类型的定义格式如下:

public enum 枚举名 {
    常量1,
    常量2,
    ...
}

我们可以定义一个表示星期的枚举:

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

2、枚举的使用

枚举类型的变量可以通过以下方式进行声明和初始化:

枚举名 变量名 = 枚举名.常量;

我们可以声明一个表示星期一的变量:

Weekday day = Weekday.MONDAY;

我们还可以使用==运算符来比较两个枚举变量是否相等:

java枚举是什么

if (day == Weekday.MONDAY) {
    System.out.println("今天是星期一");
} else {
    System.out.println("今天不是星期一");
}

枚举的特性与方法

1、枚举的特性

枚举具有以下特性:

枚举类型的实例是单例的,即每个枚举常量在内存中只有一个实例,这意味着我们可以直接使用枚举常量,而不需要创建新的实例。

枚举类型默认继承自java.lang.Enum类,因此它具有Enum类提供的所有方法和属性,我们可以使用values()方法获取枚举类型的所有常量,使用ordinal()方法获取常量的序号等。

枚举类型可以实现接口,从而扩展其功能,我们可以让枚举类型实现Comparable接口,以便对枚举常量进行排序。

枚举类型可以包含构造函数、方法和字段,这使得我们可以为枚举常量添加额外的逻辑和数据,构造函数必须是私有的,以防止外部创建新的枚举实例。

java枚举是什么

2、枚举的方法

枚举类型继承了Enum类,因此它具有Enum类提供的一些常用方法,如name()、ordinal()、valueOf()等,我们还可以在枚举类型中自定义方法,我们可以让枚举类型实现一个打印星期的方法:

public enum Weekday {
    MONDAY("星期一"),
    TUESDAY("星期二"),
    WEDNESDAY("星期三"),
    THURSDAY("星期四"),
    FRIDAY("星期五"),
    SATURDAY("星期六"),
    SUNDAY("星期日");
    private String description;
    Weekday(String description) {
        this.description = description;
    }
    public void printDescription() {
        System.out.println(description);
    }
}

我们可以使用这个方法来打印星期的描述:

Weekday day = Weekday.MONDAY;
day.printDescription(); // 输出:星期一

与其他数据类型的转换与比较

1、与其他数据类型的转换:我们可以使用Enum类的静态方法valueOf()将其他数据类型转换为枚举类型,我们可以将字符串转换为表示星期的枚举变量:

String dayStr = "MONDAY";
Weekday day = Weekday.valueOf(dayStr); // day现在是Weekday.MONDAY的实例

2、与其他数据类型的比较:由于枚举类型是单例的,因此我们可以直接使用==运算符比较两个枚举变量是否相等。

if (day == Weekday.MONDAY) { // true,因为day现在是Weekday.MONDAY的实例,与Weekday.MONDAY相等} else { // false} if (day != Weekday.FRIDAY) { // true,因为day现在是Weekday.MONDAY的实例,与Weekday.FRIDAY不相等} else { // false} if (day == null) { // false,因为day现在是Weekday.MONDAY的实例,不为null} else { // true} if (weekday == Weekday.SUNDAY || weekday == Weekday.SATURDAY) { // true,因为weekday可以是Weekday.SUNDAY或Weekday.SATURDAY的实例} else { // false} if (weekday == null) { // false,因为weekday不能是null} else { // true} if (weekday == Weekday.valueOf("TUESDAY")) { // true,因为weekday可以是Weekday.TUESDAY的实例} else { // false} if (weekday == Weekday.valueOf("INVALID")) { // false,因为"INVALID"不是一个有效的星期描述} else { // true} if (weekday == Weekday.MONDAY || weekday == Weekday.TUESDAY || weekday == Weekday.WEDNESDAY) { // true,因为weekday可以是Weekday.MONDAY、Weekday.TUESDAY或Weekday.WEDNESDAY的实例} else { // false} if (weekday != null && weekday != Weekday.FRIDAY && weekday != Weekday.SATURDAY && weekday != Weekday.SUNDAY) { // true,因为weekday可以是除周五、周六和周日之外的任何星期的实例} else { // false} if (weekday != null && weekday != Weekday.FRIDAY && weekday != Weekday.SATURDAY && weekday != Weekday.SUNDAY && weekday != Weekday.MONDAY && weekday != Weekday.TUESDAY && weekday != Weekday.WEDNESDAY && weekday != Weekday.THURSDAY) { // true,因为weekday可以是除周五、周六、周日和周一至周四之外的任何星期的实例} else { // false} if (weekday != null && weekday == Weekday.valueOf("TUESDAY")) { // true,因为weekday可以是Weekday.TUESDAY的实例} else { // false} if (weekday != null && weekday == Weekday.valueOf("INVALID")) { // false,因为"INVALID"不是一个有效的星期描述} else { // true} if (weekday != null && weekday == Weekday.valueOf("TUESDAY") || weekday == Weekday.valueOf("WEDNESDAY")) { // true,因为weekday可以是Weekday.TUESDAY或Weekday.WEDNESDAY的实例} else { // false} if (weekday != null && weekday == Weekdia

原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/173420.html

(0)
K-seoK-seoSEO优化员
上一篇 2023年12月27日 11:04
下一篇 2023年12月27日 11:08

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

免备案 高防CDN 无视CC/DDOS攻击 限时秒杀,10元即可体验  (专业解决各类攻击)>>点击进入