Java030——枚举(enum)

一、Java 枚举(enum)

1、Java 枚举是一个特殊的类,一般表示一组常量,比如一年的 4 个季节,一年的 12 个月份,一个星期的 7 天,方向有东南西北等。
2、枚举类型可以取代以往常量的定义方式,即将常量封装在类或接口中。此外,它还提供了安全检查功能。枚举类型本质上还是以类的形式存在的。

二、设置枚举常量

2.1、常规定义常量方法:通过接口

设置常量时,我们通常将常量放置在接口中,这样在程序中就可以直接使用。该常量不能被修改.因为在接口中定义常量时,该常量的修饰符为 final 与 static。常规定义常量的代码如下:

public interface Color {
    public static final String Color _A = "RED";
    public static final String Color _B = "GREEN";
}

2.2、使用枚举定义常量

enum Color 
{ 
    RED, 
    GREEN, 
    BLUE; 
} 

三、获取枚举常量

Color c1 = Color.RED;
System.out.println(c1);

//输出
RED

四、比较枚举常量

比较枚举常量是否相等可以直接使用==

Color c1 = Color.RED;
if (c1== Color.RED) {
    // 执行相应的逻辑
}

五、迭代枚举常量

for (Color c1 : Color .values()) {
    System.out.println(c1);
}

//输出
RED
GREEN
BLUE

六、枚举类型的常用方法

======================================================================================================================
方法							具体含义							使用方法						举例
values()		该方法可以将枚举类型成员以数组的形式返回		枚举类型名称.values()			Color.values()
valueof()		该方法可以实现将普通字符串转换为枚举实例		枚举类型名称.valueof()		Color.valueof("abc")
compareTo()		该方法用于比较两个枚举对象在定义时的顺序		枚举对象.compareTo()			c1.compareTo(c2)
ordinal()		该方法用于得到枚举成员的位置索引			枚举对象.ordinal()			c1.ordinal()

6.1、values()方法

enum SeasonEnum { // 四季枚举
    SPRING, SUMMER, AUTUMN, WINTER
}

class test {
    public static void main(String[] args) {
        SeasonEnum es[] = SeasonEnum.values();
		//遍历方式一
        for (int i = 0; i < es.length; i++) {
            System.out.println("枚举常量:" + es[i]);
        }
        //遍历方式二
        for (SeasonEnum s1 :  SeasonEnum.values()) {
		    System.out.println("枚举常量:" + s1);
		}
    }
}

//运行结果
//遍历方式一
枚举常量:SPRING
枚举常量:SUMMER
枚举常量:AUTUMN
枚举常量:WINTER

//遍历方式二
枚举常量:SPRING
枚举常量:SUMMER
枚举常量:AUTUMN
枚举常量:WINTER

七、枚举一般用在switch语句中

enum Color
{
    RED, GREEN, BLUE;
}
public class MyClass {
  public static void main(String[] args) {
    Color myVar = Color.BLUE;

    switch(myVar) {
      case RED:
        System.out.println("红色");
        break;
      case GREEN:
         System.out.println("绿色");
        break;
      case BLUE:
        System.out.println("蓝色");
        break;
    }
  }
}

//运行结果
蓝色
### Java 枚举类型 `enum` 的用法 枚举类型 (`enum`) 是一种特殊的数据类型,允许变量被赋予一组预定义常量中的一个。这有助于提高代码可读性和安全性。 #### 定义简单的枚举类 可以创建表示一周七天的简单枚举: ```java public enum DayOfWeek { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY; } ``` 此段代码声明了一个名为 `DayOfWeek` 的枚举类型,并为其指定了七个可能取值[^1]。 #### 增强功能:带字段和方法的枚举 除了基本形式外,还可以给枚举成员添加属性以及实现接口或编写自定义逻辑的方法: ```java public enum Planet { MERCURY(3.30E23), VENUS(4.87E24), EARTH(5.98E24), MARS(6.42E23); private final double mass; // 私有构造函数用于初始化实例变量 Planet(double mass) { this.mass = mass; } public double getMass() { return mass; } } ``` 这里展示了如何通过私有的构造器来设置每个行星的质量参数,并提供了获取该质量值得公共访问器方法。 #### 使用场景举例——状态机模拟 当处理具有有限数量离散状态的对象时,比如订单的状态转换过程,使用枚举是非常合适的解决方案之一: ```java public class Order { private Status status; public void setStatus(Status newStatus){ switch(this.status){ case PENDING: if(newStatus != Status.PROCESSING && newStatus != Status.CANCELLED) throw new IllegalStateException(); break; case PROCESSING: if(newStatus != Status.SHIPPED) throw new IllegalStateException(); break; default: if(!newStatus.equals(Status.COMPLETED)) throw new IllegalStateException(); } this.status = newStatus; } public static enum Status{ PENDING, PROCESSING, SHIPPED, COMPLETED, CANCELLED; } } ``` 上述例子中,`Order.Status` 枚举用来管理订单的不同阶段及其合法转变路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值