【JAVA】最容易忽视的数据类型——枚举

在这里插入图片描述


个人主页:【😊个人主页】
系列专栏:【❤️初识JAVA】


前言

Java枚举是一个特殊的类一般表示一组常量,比如一年的 4个季节,一年的 12 个月份,一个星期的7天,方向有东南西北等。今天就让我们来学习一下在JAVA中这个特殊的类。
在这里插入图片描述

枚举

枚举是一种数据类型,用于定义一组具有相同属性的常量集合。在枚举中,每个常量都有一个名称和一个关联的值,可以通过名称或值来引用常量。枚举常用于减少代码中的魔法数字或字符串,使代码更加清晰易懂

enum Color
{
    RED, GREEN, BLUE;
}
 
public class Test
{
    // 执行输出结果
    public static void main(String[] args)
    {
        Color c1 = Color.RED;
        System.out.println(c1);
    }
}

在这个枚举中,我们定义了三个常量:RedGreenBlue。默认情况下,它们的值分别为0、1和2。我们将枚举中的Red常量分配给myColor变量,并检查myColor是否等于枚举中的Green常量。

Color myColor = Color.Red;
if (myColor == Color.Green)
{
    // ...
}

内部类里使用枚举

可以在Java内部类中使用枚举,可以通过在内部类中定义枚举类型来实现。

public class Outer {
    private int x;

    public void doSomething() {
        Inner inner = new Inner();
        inner.doSomethingElse();
    }

    private class Inner {
        private void doSomethingElse() {
            Status status = Status.IN_PROGRESS;
            // ...
        }

        private enum Status {
            IN_PROGRESS,
            COMPLETED,
            FAILED
        }
    }
}

在上面的代码中,内部类inner中定义了一个枚举类型Status。在doSomethingElse()方法中,可以创建枚举类型的实例并使用它们。

迭代枚举元素

在Java中,我们可以使用迭代器(Iterator)来枚举集合中的元素。

List<String> strings = new ArrayList<>();
strings.add("foo");
strings.add("bar");
strings.add("baz");

Iterator<String> iterator = strings.iterator();
while (iterator.hasNext()) {
    String str = iterator.next();
    System.out.println(str);
}

在这个示例中,我们首先创建了一个包含三个字符串的ArrayList。然后,我们创建一个迭代器对象,并使用while循环来遍历ArrayList中的所有元素。在每次循环迭代时,我们通过调用next()方法获取下一个元素,并将其赋值给一个字符串变量。然后,我们将该字符串打印输出。循环会一直执行,直到没有更多的元素。

需要注意的是,迭代器只能单向遍历集合,不能随意增加或删除元素。如果需要对集合进行修改操作,应该使用集合本身提供的方法进行操作。

在 switch 中使用枚举类

枚举类常应用于 switch 语句中。

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

    public static void main(String[] args) {
        Day day = Day.TUESDAY;

        switch (day) {
            case MONDAY:
                System.out.println("Today is Monday");
                break;
            case TUESDAY:
                System.out.println("Today is Tuesday");
                break;
            case WEDNESDAY:
                System.out.println("Today is Wednesday");
                break;
            case THURSDAY:
                System.out.println("Today is Thursday");
                break;
            case FRIDAY:
                System.out.println("Today is Friday");
                break;
            case SATURDAY:
                System.out.println("Today is Saturday");
                break;
            case SUNDAY:
                System.out.println("Today is Sunday");
                break;
            default:
                System.out.println("Invalid day");
                break;
        }
    }
}

在上面的代码中,我们定义了一个Day枚举类,其中包含一周中的每一天。在main方法中,我们创建了一个Day枚举实例,并在switch语句中使用了这个枚举实例。根据Day的不同值,我们输出不同的结果。

在使用枚举类时,switch语句必须针对枚举类型进行匹配,否则编译器会发出警告。此外,在枚举类型中必须包含一个default分支,以处理可能的无效输入。

  • 39
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 34
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 34
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

许思王

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

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

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

打赏作者

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

抵扣说明:

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

余额充值