Java中的枚举(Enum)是什么?

在Java中,枚举(Enum)是一种特殊的数据类型,用于表示一组固定的常量。枚举类型使得代码更加清晰、类型安全,并减少了错误的可能性。枚举通常用于表示一组相关的常量,比如一周的七天、交通信号灯的颜色等。

以下是一些关于Java中枚举的关键点:

  1. 定义枚举
    使用enum关键字来定义枚举类型。例如,定义一个表示一周七天的枚举:

    
    

    java复制代码

    public enum Day {
    MONDAY,
    TUESDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY,
    SUNDAY
    }
  2. 使用枚举
    枚举类型可以像其他数据类型一样使用。例如,定义一个变量并赋值:

    
    

    java复制代码

    Day today = Day.MONDAY;
  3. 枚举的方法和构造函数
    枚举类型可以有字段、方法和构造函数。每个枚举常量实际上是枚举类的一个实例。例如:

    
    

    java复制代码

    public enum Planet {
    MERCURY(3.303e+23, 2.4397e6),
    VENUS(4.869e+24, 6.0518e6),
    EARTH(5.976e+24, 6.37814e6),
    MARS(6.421e+23, 3.3972e6);
    private final double mass; // in kilograms
    private final double radius; // in meters
    // Universal gravitational constant (m3 kg-1 s-2)
    public static final double G = 6.67300E-11;
    // Constructor
    Planet(double mass, double radius) {
    this.mass = mass;
    this.radius = radius;
    }
    public double mass() { return mass; }
    public double radius() { return radius; }
    // Universal formula for surface gravity
    public double surfaceGravity() {
    final double sr = radius * radius;
    return G * mass / sr;
    }
    public double surfaceWeight(double otherMass) {
    // F = ma
    return otherMass * surfaceGravity();
    }
    public static void main(String[] args) {
    double earthWeight = 175;
    double mass = earthWeight / EARTH.surfaceGravity();
    for (Planet p : Planet.values()) {
    System.out.printf("Your weight on %s is %f%n",
    p, p.surfaceWeight(mass));
    }
    }
    }
  4. 枚举的内置方法

    • values():返回包含所有枚举常量的数组。
    • name():返回枚举常量的名称。
    • ordinal():返回枚举常量在声明中的位置(从0开始)。
    • toString():通常返回枚举常量的名称,与name()方法相同。

    例如:

    
    

    java复制代码

    Day[] days = Day.values();
    for (Day day : days) {
    System.out.println(day.name());
    }
  5. 枚举的switch语句
    枚举类型非常适合用在switch语句中,因为枚举常量的数量是固定的,这提高了代码的可读性和安全性。

    
    

    java复制代码

    switch (today) {
    case MONDAY:
    System.out.println("Today is Monday!");
    break;
    case FRIDAY:
    System.out.println("Today is Friday!");
    break;
    default:
    System.out.println("It's another day.");
    break;
    }
  6. 枚举的迭代
    可以使用for-each循环来迭代枚举类型的所有常量。

    
    

    java复制代码

    for (Day day : Day.values()) {
    System.out.println(day);
    }

总结来说,Java中的枚举(Enum)是一种强大的工具,用于定义和使用一组相关的常量,并且支持方法和构造函数,使得枚举类型可以包含更多的行为和状态。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值