枚举类知识点总结
枚举类是Java中一种特殊的类,它用于定义一组有限的常量集合。以下是关于枚举类的一些重要知识点:
-
枚举类的定义:
枚举类的定义通过使用
enum
关键字,后面跟着枚举类型的名称以及枚举常量的列表。enum Day { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }
-
枚举常量:
== 枚举常量是枚举类型的实例,它们是预定义的、唯一的、不可改变的。==
在上述例子中,`SUNDAY`、`MONDAY`等就是枚举常量。
-
枚举类的方法:
你可以在枚举类中定义方法,每个枚举常量都可以调用这些方法。
enum Day { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY public void printGreeting() { System.out.println("Hello from " + this.name()); } }
-
访问枚举常量:
可以通过枚举类的名称和枚举常量的名称来访问它们。
Day today = Day.MONDAY;
-
使用
switch
语句:由于枚举类型是有限的,通常在代码中使用
switch
语句来处理不同的枚举常量。switch (today) { case SUNDAY: // 处理星期天 break; case MONDAY: // 处理星期一 break; // ... }
-
枚举类的构造函数和属性:
枚举类可以有自己的构造函数、属性和方法,但枚举常量必须在枚举类型的开头列出,并且每个枚举常量后面要用逗号分隔。
enum Season { SPRING("Warm"), SUMMER("Hot"), AUTUMN("Cool"), WINTER("Cold"); private String description; private Season(String description) { this.description = description; } public String getDescription() { return description; } }
-
枚举类的
values()
方法:values()
方法返回一个包含枚举类型所有常量的数组。Day[] days = Day.values();
-
枚举类的
valueOf()
方法:valueOf()
方法可以将一个字符串转换为相应的枚举常量。Day myDay = Day.valueOf("MONDAY"); // myDay 将会是 Day.MONDAY
-
枚举类的实现接口:
枚举类可以实现接口,每个枚举常量都可以提供自己的实现。
interface Behavior { void perform(); } enum Mood implements Behavior { HAPPY { @Override public void perform() { System.out.println("I'm feeling happy!"); } }, SAD { @Override public void perform() { System.out.println("I'm feeling sad."); } }, ANGRY { @Override public void perform() { System.out.println("I'm feeling angry!"); } } }
学习测试代码
// 定义一个枚举类型
enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}
public class Main1 {
public static void main(String[] args) {
// 使用枚举类型
Day today1 = Day.MONDAY;
Day today2 = Day.valueOf("TUESDAY");
// 输出今天是星期几
switch (Day.valueOf("FRIDAY")) {
case SUNDAY:
System.out.println("今天是星期天");
break;
case MONDAY:
System.out.println("今天是星期一");
break;
case TUESDAY:
System.out.println("今天是星期二");
break;
case WEDNESDAY:
System.out.println("今天是星期三");
break;
case THURSDAY:
System.out.println("今天是星期四");
break;
case FRIDAY:
System.out.println("今天是星期五");
break;
case SATURDAY:
System.out.println("今天是星期六");
break;
}
}
}