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

/*
输出结果:
向上移动
___________第二种方法枚举做信息标志和分类___________
向下移动
 */
相关推荐
Mahir0839 分钟前
Spring 循环依赖深度解密:从问题本质到三级缓存源码级解析
java·后端·spring·缓存·面试·循环依赖·三级缓存
杜子不疼.1 小时前
【C++ AI 大模型接入 SDK】 - DeepSeek 模型接入(上)
开发语言·c++·chatgpt
加号31 小时前
【C#】 串口通信技术深度解析及实现
开发语言·c#
sycmancia2 小时前
Qt——编辑交互功能的实现
开发语言·qt
RyFit2 小时前
SpringAI 常见问题及解决方案大全
java·ai
石山代码2 小时前
C++ 内存分区 堆区
java·开发语言·c++
绝知此事2 小时前
【算法突围 01】线性结构与哈希表:后端开发的收纳术
java·数据结构·算法·面试·jdk·散列表
无风听海2 小时前
C# 隐式转换深度解析
java·开发语言·c#
一只大袋鼠3 小时前
Git 进阶(二):分支管理、暂存栈、远程仓库与多人协作
java·开发语言·git
LuminousCPP4 小时前
数据结构 - 线性表第四篇:C 语言通讯录优化升级全记录(踩坑 + 思考)
c语言·开发语言·数据结构·经验分享·笔记·学习