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

/*
输出结果:
向上移动
___________第二种方法枚举做信息标志和分类___________
向下移动
 */
相关推荐
一定要AK3 小时前
Spring 入门核心笔记
java·笔记·spring
A__tao3 小时前
Elasticsearch Mapping 一键生成 Java 实体类(支持嵌套 + 自动过滤注释)
java·python·elasticsearch
KevinCyao4 小时前
java视频短信接口怎么调用?SpringBoot集成视频短信及回调处理Demo
java·spring boot·音视频
lly2024064 小时前
C 标准库 - `<stdio.h>`
开发语言
沫璃染墨4 小时前
C++ string 从入门到精通:构造、迭代器、容量接口全解析
c语言·开发语言·c++
jwn9994 小时前
Laravel6.x核心特性全解析
开发语言·php·laravel
迷藏4944 小时前
**发散创新:基于Rust实现的开源合规权限管理框架设计与实践**在现代软件架构中,**权限控制(RBAC)** 已成为保障
java·开发语言·python·rust·开源
功德+n4 小时前
Linux下安装与配置Docker完整详细步骤
linux·运维·服务器·开发语言·docker·centos
明日清晨4 小时前
python扫码登录dy
开发语言·python
我是唐青枫4 小时前
C#.NET gRPC 深入解析:Proto 定义、流式调用与服务间通信取舍
开发语言·c#·.net