Java枚举(Enum)的使用

目录

一、枚举类型的定义

二、枚举类型的使用

(一)、枚举类型的常用方法

(二)、枚举的简单使用

(1)、和switch的搭配使用

(2)、枚举类型的values方法

(3)、枚举类型的valueOf方法

(4)、枚举类型的compareTo方法

三、优点和缺点


一、枚举类型的定义

        我们需要将不同变量编号时,通常将其变量进行赋值为1,2,3...但是这么做有时候会吧1误以为某个变量,这时我们可以直接用枚举来组织,这样一来就有了枚举类型。

如图:

上面的变量都有序了,上面变量没赋值,序号默认为0,1,2

二、枚举类型的使用

(一)、枚举类型的常用方法

(二)、枚举的简单使用

先创建一个枚举类

      代码如下:

public enum TestEnum {
    RED(1, "红色"),GREEN(2, "绿色"),BLACK(3, "黑色");
    private int ordinal;
    private String color;
    //构造方法默认为私有的
    private TestEnum(int ordinal, String color) {
        this.ordinal = ordinal;
        this.color = color;
    }

        (1)、和switch的搭配使用

代码如下:

 public static void main(String[] args) {
        TestEnum color = RED;
        switch (color) {
            case RED:
                System.out.println("红色");
                break;
            case GREEN:
                System.out.println("绿色");
                break;
            case BLACK:
                System.out.println("黑色");
                break;
            default:
                System.out.println("error");
                break;
        }
    }

这种情况会打印  红色

(2)、枚举类型的values方法

代码如下:

public static void main(String[] args) {
        TestEnum[] testEnum = TestEnum.values();
        for(int i = 0; i < testEnum.length; i++) {
            //打印枚举所有变量的序号
            System.out.println(testEnum[i].ordinal);
            //打印枚举所有变量的下标
            System.out.println(testEnum[i].ordinal());
            //打印枚举所有变量的color值
            System.out.println(testEnum[i].color);
        }

结果如下

(3)、枚举类型的valueOf方法

代码如下:

public static void main(String[] args) {
        //以普通字符串转换为枚举实例
        TestEnum testEnum = TestEnum.valueOf("GREEN");
        System.out.println(testEnum);
    }

结果如下:

(4)、枚举类型的compareTo方法

代码如下:

public static void main(String[] args) {
        //比较两个枚举成员定义时的顺序
        System.out.println(RED.compareTo(BLACK));
    }

结果如下:

三、优点和缺点

优点:

        1、枚举具有内置方法,代码更简洁,优雅

        2、枚举常量更具安全性

缺点:不能继承,无法扩展


都看到这里了,点个赞再走呗,谢谢谢谢谢

猜你喜欢

转载自blog.csdn.net/cool_tao6/article/details/134018944