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

/*
输出结果:
向上移动
___________第二种方法枚举做信息标志和分类___________
向下移动
 */
相关推荐
侠客行03176 分钟前
Mybatis入门到精通 一
java·mybatis·源码阅读
消失的旧时光-194310 分钟前
微服务的本质,其实是操作系统设计思想
java·大数据·微服务
Coder_Boy_14 分钟前
基于SpringAI的智能平台基座开发-(四)
java·人工智能·spring boot·langchain·springai
Bruce_Liuxiaowei17 分钟前
Nmap+Fofa 一体化信息搜集工具打造
运维·开发语言·网络·网络安全
智航GIS19 分钟前
5.1 if语句基础
开发语言·python
bu_shuo23 分钟前
MATLAB中的转置操作及其必要性
开发语言·算法·matlab
码界奇点1 小时前
基于Spring Boot的内容管理系统框架设计与实现
java·spring boot·后端·车载系统·毕业设计·源代码管理
KoalaShane1 小时前
El-slider 增加鼠标滚动滑块事件
开发语言·前端·javascript
智算菩萨1 小时前
【Python进阶】搭建AI工程:Python模块、包与版本控制
开发语言·人工智能·python
C_心欲无痕1 小时前
vue3 - watchSyncEffect同步执行的响应式副作用
开发语言·前端·javascript·vue.js·vue3