Java--枚举类型

本文介绍了Java中枚举类型的使用,包括如何定义、优点(如类型安全、紧凑有效等)、常用方法(values(),valueOf(),compareTo(),ordinal())以及构造方法。展示了如何通过这些方法操作枚举实例和获取成员信息。

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

        Java中枚举类型可以取代一般的常量定义方式,可以将常量封装在类或接口中;枚举类型本质上还是以类的形式存在的,枚举类型继承于java.lang.Enum类,定义一个枚举类型时,每一个枚举类型成员都可以看做是枚举类型的一个实例,这些枚举类型成员默认都被【public+final+static】修饰。

        枚举类型声明提供了一种用户友好的变量定义方法,枚举了某种数据类型所有可能出现的值。

枚举类型的优点:

        1.类型安全;

        2.紧凑有效的数据定义;

        3.可以和程序其他部分完美交互;

        4.运行效率高;

1.定义枚举类型的关键字【enum

2.使用枚举类型设置常量

public enum Constants{

        Constants_A,

        Constants_B,

        Constants_C

}

使用时通过Constants.Constants_A来调用。

3.操作枚举类型成员的方法

枚举类型的常用方法
方法名称返回值类型具体含义使用方法举例
values()枚举成员的数组将枚举类型成员以数组的形式放回枚举类型名称.values()Constants.values()
valueOf()枚举实例对象将普通字符串转换为枚举类型实例枚举类型名称.valuesOf("abc")Constants.valueOf("abc")
compareTo()int型用于比较2个枚举对象在定义时的顺序枚举对象.compareTo()Constants_A.compareTo(Constants_B)
ordinal()int型用于得到枚举成员的位置索引枚举对象.ordinal()Constants_A.ordinal()

3.1 values()方法

        通过此方法获取枚举类型的成员,以数组的形式返回。

package myenum;

public class ShowEnum {
    enum Constants {
        Constants_A, Constants_B
    }

    public static void main(String[] args) {
        for (int i = 0; i < Constants.values().length; i++) {
            System.out.println("枚举类型成员变量_" + i + ": " + Constants.values()[i]);
        }
    }
}

输出:
        枚举类型成员变量_0: Constants_A
        枚举类型成员变量_1: Constants_B

3.2 valuesOf()方法

        valuesOf()方法可以将普通字符串转换为枚举类型。

3.3 compareTo()方法

        compareTo()方法用于比较两个枚举类型对象在定义时的顺序。

package myenum;

public class EnumMethodTest {
    enum Constants2 {
        constantsxxx, Constants_A, Constants_B, constants_C
    }

    public static void compare(Constants2 c) {
        for (int i = 0; i < Constants2.values().length; i++) {
            System.out.println(c + "与" + Constants2.values()[i] + "的位置比较结果是:" + c.compareTo(Constants2.values()[i]));
        }
    }

    public static void main(String[] args) {
        compare(Constants2.valueOf("Constants_B"));
    }
}

输出:
        Constants_B与constantsxxx的位置比较结果是:2
        Constants_B与Constants_A的位置比较结果是:1
        Constants_B与Constants_B的位置比较结果是:0
        Constants_B与constants_C的位置比较结果是:-1

compareTo()方法的返回结果中:1代表方法中的参数在调用对象之前一个位置;0代表方法中的参数两个对象位置相同;-1代表方法中的参数在调用对象之后一个位置。

3.4 ordinal()方法

        ordinal()方法用于获取枚举对象的索引位置。

package myenum;

public class EnumIndexTest {
    enum Constants3 {
        constantsxxx, Constants_A, Constants_B, constants_C
    }

    public static void main(String[] args) {
        for (int i = 0; i < Constants3.values().length; i++) {
            System.out.println(Constants3.values()[i] + "的索引是:" + Constants3.values()[i].ordinal());
        }
    }
}

输出:
        constantsxxx的索引是:0
        Constants_A的索引是:1
        Constants_B的索引是:2
        constants_C的索引是:3

4.枚举类型中的构造方法

        枚举类型中的构造方法必须是private修饰的。

package myenum;

public class EnumConstructorMethod {
    enum Constants4 {
        con_A("我是枚举成员A"),       //定义带参数的枚举类型成员,枚举成员间必须,逗号分隔

        con_B("我是枚举成员B"),

        con_C("我是枚举成员C"),

        con_D(3);

        private String description;
        private int i = 4;

        private Constants4() {
        }

        private Constants4(String desc) {    //private定义枚举类型的构造方法
            this.description = desc;
        }

        private Constants4(int i) {          //private定义枚举类型的构造方法
            this.i = this.i + i;
        }

        public String getDescription() {    //获取description的值
            return description;
        }

        public int getI() {                 //获取i的值
            return i;
        }

        public static void main(String[] args){
            for (int i=0; i<Constants4.values().length;i++){
                System.out.println(Constants4.values()[i]+"调用getDescription()方法的结果为:"+Constants4.values()[i].getDescription());
                System.out.println(Constants4.values()[i]+"调用getI()方法的结果为:"+Constants4.values()[i].getI());
            }
        }
    }
}

输出:
        con_A调用getDescription()方法的结果为:我是枚举成员A
        con_A调用getI()方法的结果为:4
        con_B调用getDescription()方法的结果为:我是枚举成员B
        con_B调用getI()方法的结果为:4
        con_C调用getDescription()方法的结果为:我是枚举成员C
        con_C调用getI()方法的结果为:4
        con_D调用getDescription()方法的结果为:null
        con_D调用getI()方法的结果为:7

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

chuntian_tester

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

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

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

打赏作者

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

抵扣说明:

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

余额充值