🌿🌿🌿跟随博主脚步,从这里开始→博主主页🌿🌿🌿
枚举类型
- 枚举类型的定义
- 枚举类型的方法
- 实战演练
- 枚举在switch中的应用
- 实战演练
- 枚举类的构造方法
- 实战演练
枚举类型的定义
[修饰符] enum 枚举类型名{[public static final]枚举成员; //只能写在第一行其他成员;[private]构造方法方法}
- 修饰符可以是public、private、internal
- 枚举类型名有两层含义:一是作为枚举名使用;二是表示枚举成员的数据类型。枚举成员也称为枚举实例或枚举对象。
- 枚举默认继承自java.lang.Enum类。
- 创建枚举对象不能使用new( )运算符,而应直接将枚举成员赋值给枚举对象。
枚举类型的方法
- 每个枚举类型的成员都可以看作是Enum类的实例,这些枚举成员默认被final public static修饰。
- 访问枚举类型的成员
枚举名.枚举成员
枚举名.valueOf( 参数) - 因为枚举也是一种类,所以它具有与其他类几乎相同的特性,因此可以定义枚举的属性、构造方法以及方法。
- 枚举类常用方法
方法 | 说明 |
---|---|
public static E[] values( ) | 返回枚举类型的数组,包含了枚举的所有枚举成员 |
public static E valueOf(String str) | 返回名称为str的枚举成员 |
public final int compareTo (E o) | 返回当前枚举成员与参数枚举成员o在定义时顺序的比较结果 |
Public final class getDeclaringClass() | 返回对应的枚举常量的枚举类型的类对象 |
public final String name( ) | 返回枚举常量的名字 |
public final int ordinal ( ) | 返回枚举成员在枚举中的序号(0开始) |
public String toString( ) | 返回枚举成员的名称 |
实战演练
【例】定义一个枚举类型,然后输出枚举成员的名称和对应的序号。
enum Direction
{ EAST,SOUTH,WEST,NORTH }
public class EnumDemo{public static void main(String[] args){Direction dir=Direction.EAST;System.out.print(dir);for(Direction d:Direction.values())System.out.println("序号:"+d.ordinal()+" 的值为"+d.name());}
}
枚举在switch中的应用
- 枚举类型有一个特别实用的特性,它可以在switch语句中使用。
- java.time.DayOfWeek是一个枚举类型,其中包括一周的7天,分别为MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY、SATURDAY和SUNDAY,序号从0到6。
- EnumSwitch.java程序在switch结构中使用DayOfWeek枚举。
实战演练
【例】 java.time.DayOfWeek是一个枚举类,一周7天,序号分别是0-6
import java.time.DayOfWeek;
public class EnumSwitch {public static void describe (DayOfWeek day) {switch (day) {case MONDAY: System.out.println("Mondays are bad.");break;case FRIDAY: System.out.println("Fridays are better.");break;case SATURDAY:case SUNDAY: System.out.println("Weekends are best.");break;default:System.out.println("Midweek days are so-so.");break;}}
public static void main(String[] args) {DayOfWeek firstDay = DayOfWeek.MONDAY;describe (firstDay);DayOfWeek thirdDay = DayOfWeek.WEDNESDAY;describe (thirdDay);DayOfWeek seventhDay = DayOfWeek.SUNDAY;describe(seventhDay); }
}
运行结果:
枚举类的构造方法
- 枚举的构造方法只是在构造枚举实例值时被调用。每一个枚举实例值都是枚举的一个对象,因此创建每个枚举实例时都需要调用该构造方法。
实战演练
【例】 定义color枚举,包含四种颜色,声明两个private成员变量(name颜色名字、index索引)
package com;
public enum Color {
RED("红色", 1), GREEN("绿色", 2), WHITE("白色", 3), YELLOW("黄色", 4);private String name;private int index;private Color(String name, int index) {this.name = name;this.index = index;}public static String getName(int index) {for (Color c : Color.values()) {if (c.getIndex() == index) {return c.name;}}return null;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getIndex() {return index;}public void setIndex(int index) {this.index = index;}@Overridepublic String toString() {return this.name + "_" + this.index;}public static void main (String[] args) { Color c = Color.RED; // 自动调用构造方法System.out.println(c.toString()); // 输出:1-红色}}}
博主用心写,读者点关注,互动传真情,知识不迷路