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("无效的移动方向");
        }
    }
}

/*
输出结果:
向上移动
___________第二种方法枚举做信息标志和分类___________
向下移动
 */
相关推荐
似水明俊德1 小时前
02-C#.Net-反射-面试题
开发语言·面试·职场和发展·c#·.net
Leinwin1 小时前
OpenClaw 多 Agent 协作框架的并发限制与企业化规避方案痛点直击
java·运维·数据库
薛定谔的悦2 小时前
MQTT通信协议业务层实现的完整开发流程
java·后端·mqtt·struts
enjoy嚣士2 小时前
springboot之Exel工具类
java·spring boot·后端·easyexcel·excel工具类
Thera7772 小时前
C++ 高性能时间轮定时器:从单例设计到 Linux timerfd 深度优化
linux·开发语言·c++
罗超驿2 小时前
独立实现双向链表_LinkedList
java·数据结构·链表·linkedlist
炘爚3 小时前
C语言(文件操作)
c语言·开发语言
阿蒙Amon3 小时前
C#常用类库-详解SerialPort
开发语言·c#
盐水冰3 小时前
【烘焙坊项目】后端搭建(12) - 订单状态定时处理,来单提醒和顾客催单
java·后端·学习
凸头3 小时前
CompletableFuture 与 Future 对比与实战示例
java·开发语言