【Java】枚举类【主线学习笔记】


前言

Java是一门功能强大且广泛应用的编程语言,具有跨平台性和高效的执行速度,广受开发者喜爱。在接下来的学习过程中,我将记录学习过程中的基础语法、框架和实践技巧等,分享学习心得,对自己学习过程进行整理和总结,也希望能为其他学习Java的朋友提供一些帮助和参考。


枚举类

枚举类(Enum)是一种特殊的类,用于定义一组常量。它可以提高代码的可读性和可维护性,尤其是在处理固定集合的值时,比如星期几、季节、颜色等。在Java中,枚举类可以包含方法、构造函数和字段。

使用举例:

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

//使用枚举类时,可以像这样引用它的常量:
Day today = Day.MONDAY;

枚举类的优势

  • 类型安全:只能使用定义的常量,避免了使用整型常量带来的错误。
  • 可读性:常量名称更加描述性,易于理解。
  • 内置方法:枚举类提供了内置的方法,如 values()(返回所有枚举值)和 valueOf(String name)(根据名称返回对应的枚举常量)。

使用

在JDK 5之前,Java没有内置的枚举类型,通常使用 static final 常量和类来模拟枚举。
可以创建一个包含常量的类,通常会将构造函数设为私有,防止外部实例化:

public class Day {
    public static final Day SUNDAY = new Day("SUNDAY");
    public static final Day MONDAY = new Day("MONDAY");
    public static final Day TUESDAY = new Day("TUESDAY");
    public static final Day WEDNESDAY = new Day("WEDNESDAY");
    public static final Day THURSDAY = new Day("THURSDAY");
    public static final Day FRIDAY = new Day("FRIDAY");
    public static final Day SATURDAY = new Day("SATURDAY");

    private String name;

    private Day(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

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

上述使用 static final 常量来模拟枚举是一种常见做法,但在JDK 5及之后,Java引入了枚举类型(enum),使得定义和使用枚举更加简单和安全。以下是如何在现代Java中使用枚举类型的基本示例和特性:

public enum Day {
    // 必须在枚举类的开头声明多个对象,并使用逗号隔开  
    SUNDAY("Sunday"),
    MONDAY("Monday"),
    TUESDAY("Tuesday"),
    WEDNESDAY("Wednesday"),
    THURSDAY("Thursday"),
    FRIDAY("Friday"),
    SATURDAY("Saturday");
    //声明当前类的对象的实例变量,使用private final 
    private final String name;

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

    public final String getName() {
        return name;
    }
}

//使用
for (Day day : Day.values()) {
    System.out.println(day);
}
//或者
Day day = Day.valueOf("FRIDAY");
System.out.println("The day is: " + day);

内置方法

枚举类型提供了一些内置方法:

  • values():返回所有枚举值的数组。
  • valueOf(String name):根据名称返回对应的枚举常量。
  • name():返回枚举常量的名称。
System.out.println(Day.MONDAY.name()); // 输出 "MONDAY"
  • ordinal():返回枚举常量的序数(位置),即它在枚举声明中的顺序,从0开始。
  • toString():返回枚举常量的名称,通常与 name() 方法的返回值相同,可自己手动重写。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虫本初阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值