Java—枚举类

目录

1、认识枚举类

2、枚举类常见应用场景


1、认识枚举类

  • 枚举类是一种特殊的类。

枚举类的写法

特点:

  • 枚举类中的第一行,只能写枚举类的对象名称,且要用逗号隔开。
  • 这些名称,本质是常量,每个常量都记住了枚举类的一个对象。

枚举类的特点

A枚举类

java 复制代码
public enum A {
    //枚举类第一行只能罗列枚举对象的名称这些名称本质是常量。
    x, y, z;
}

Test测试类

java 复制代码
public class Test {
    public static void main(String[] args) {
        A a1 = A.x;
        A a2 = A.y;
        System.out.println(a1);  //打印的是x说明toString方法被重写
        System.out.println(a2);

        System.out.println(a1.ordinal()); //得到a1的索引  // 0
        System.out.println(a2.ordinal()); //1
        //获取枚举类中所有的枚举值
        System.out.println(A.values());  //[x, y, z]
    }
}

/*
输出结果:
x
y
0
1
[Lenumdemo.A;@6f2b958e
 */

2、枚举类常见应用场景

枚举类很适合做信息分类和标志。

Constant 常量类

java 复制代码
public class Constant {
    //常量包
    public static final int UP = 0;
    public static final int DOWN = 1;
    public static final int LEFT = 2;
    public static final int RIGTH = 3;
}

Direction 类:枚举类

java 复制代码
public enum Direction {
    UP, DOWN, LEFT, RIGTH;
}

Test类测试类

java 复制代码
public class Test {
    public static void main(String[] args) {
        //需求:模拟上下左右移动图片的场景
        //第一种方法是常量做信息标志和分类:但参数值不受约束
        move(Constant.UP);
        //第二种方法枚举做信息标志和分类
        System.out.println("___________第二种方法枚举做信息标志和分类___________");
        move1(Direction.DOWN);
    }
    //方法2:用枚举做信息标志和分类
    public static void move1(Direction direction){
        switch (direction){
            case UP:
                System.out.println("向上移动");
                break;
            case DOWN:
                System.out.println("向下移动");
                break;
            case LEFT:
                System.out.println("向左移动");
                break;
            case RIGTH:
                System.out.println("向右移动");
                break;
            default:
                System.out.println("无效的移动方向");
        }
    }

    //用常量做信息标志和分类
    public static void move(int direction){
        switch (direction){
            case Constant.UP:
                System.out.println("向上移动");
                break;
            case Constant.DOWN:
                System.out.println("向下移动");
                break;
            case Constant.LEFT:
                System.out.println("向左移动");
                break;
            case Constant.RIGTH:
                System.out.println("向右移动");
                break;
            default:
                System.out.println("无效的移动方向");
        }
    }
}

/*
输出结果:
向上移动
___________第二种方法枚举做信息标志和分类___________
向下移动
 */
相关推荐
Wang's Blog1 分钟前
Java 中间件之 RabbitMQ 快速入门: SpringAMQP 消息转换器
java·中间件·java-rabbitmq
染指111018 分钟前
142.Agent-多Agent框架-通过Skills实现多Agent
开发语言·人工智能·python·langchain·agents
Re_zero27 分钟前
一次 SSE 断流排查:PrintWriter 吞掉了我的 IOException
java·后端
好好学习O(∩_∩)O36 分钟前
[QT] 多线程moveToThread 和易踩的8个坑
开发语言·qt
我是人✓1 小时前
Java核心语法:作用域、循环与大数值处理
java·开发语言·后端
敲代码的乔帮主1 小时前
Python 3 现代类型标注入门
开发语言·python
夜之眷属1 小时前
PriorityQueue:for-each 遍历和 poll 取出,顺序一样吗?
java·服务器·数据结构·后端·算法
‎ദ്ദിᵔ.˛.ᵔ₎2 小时前
c++11:fuction包装器
开发语言·c++
kimnoic2 小时前
Python 爬虫的原理
开发语言·python
Fluxproxy2 小时前
Python爬虫异步提速终极方案|线程池ThreadPoolExecutor实战,告别单线程慢速爬取
开发语言·爬虫·python