Java--枚举类型

        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

你可能感兴趣的:(Java,java,开发语言)