Java枚举入门

文章介绍了Java中枚举的定义、常用方法如valueOf、toString、ordinal和compareTo,以及如何通过枚举实现单例模式。示例代码展示了枚举的测试用法,包括获取枚举常量、获取位置、比较顺序和获取所有枚举值。枚举在单例模式中的应用确保了对象的唯一性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概念:枚举主要用来定义一个有限集合内的固定值。

一、定义枚举

/**
 * 季节枚举
 */
public enum SeasonEnum {

    SPRING, SUMMER, AUTUMN, WINTER;
}

枚举编译后实际上继承了java.lang.Enum这个类。

二、常用方法

valueOf:返回指定的名字、给定类的枚举常量

toString:返回枚举常量名

oridinal:返回枚举常量在enum中的位置,从0开始

compareTo:比较枚举常量的顺序

values:返回所有的枚举数据

三、测试

示例代码如下:

/**
 * @author qx
 * @date 2023/06/20
 * @desc 枚举测试
 */
public class SeasonTest {
    public static void main(String[] args) {
        // 根据字符串获取枚举
        SeasonEnum seasonEnum = SeasonEnum.valueOf("SPRING");
        System.out.println(seasonEnum);
        System.out.println("---------------");
        
        // 打印枚举数据
        System.out.println(SeasonEnum.AUTUMN);
        System.out.println("---------------");

        // 返回枚举的位置
        System.out.println(SeasonEnum.SUMMER.ordinal());
        System.out.println("---------------");

        // 比较枚举的顺序
        System.out.println(SeasonEnum.SUMMER.compareTo(SeasonEnum.WINTER));
        System.out.println("---------------");

        //  values方法获取所有的枚举
        SeasonEnum[] seasonEnums = SeasonEnum.values();
        for (SeasonEnum enumData : seasonEnums) {
            System.out.println(enumData);
        }

    }
}

程序执行结果:

SPRING
---------------
AUTUMN
---------------
1
---------------
-2
---------------
SPRING
SUMMER
AUTUMN
WINTER

四、常见用途

枚举常常用于单例模式,能够保证对象的唯一性。

代码示例如下:

/**
 * @author qx
 * @date 2023/06/20
 * @desc 枚举创建单例测试
 */
public class MyClass {
    private MyClass() {
    }

    enum SingletonEnum {
        INSTANCE;
        private final MyClass myClass;

        private SingletonEnum() {
            myClass = new MyClass();
        }

        public MyClass getInstance() {
            return myClass;
        }
    }

    public static MyClass getInstance() {
        return SingletonEnum.INSTANCE.getInstance();
    }

    public static void main(String[] args) {
        System.out.println(MyClass.getInstance());
        System.out.println(MyClass.getInstance());
    }
}

程序执行结果:

day03.MyClass@1b6d3586
day03.MyClass@1b6d3586

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

qinxun2008081

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

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

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

打赏作者

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

抵扣说明:

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

余额充值