java中的枚举

枚举

枚举类型的概述

  • 关键字:enum

  • 你可以把枚举类型理解成是一个自定义的常量的序列

枚举的语法结构

定义的枚举类型文件

package com.it.xiaosi.demo01;

/**
 * @Classname : direction
 * @Description : TODO 枚举
 * @Author : lin_refuel@qq.com
 */
public enum direction {
    // 四个常量
    UP,LIFT,DOWN,RIGHT;
}

测试类 - 访问上面的枚举类型

package com.it.xiaosi.demo01;

/**
 * @Classname : test
 * @Description : TODO 测试类
 * @Author : lin_refuel@qq.com
 */
public class test {
    public static void main(String[] args) {
        // 访问枚举里面的成员
        System.out.println(direction.DOWN);
        System.out.println(direction.UP);
        System.out.println(direction.RIGHT);
        System.out.println(direction.LIFT);
        System.out.println("=======================");
        // 枚举里面的每一个成员都相当于一个direction类型
        direction direction = null;
        direction = direction.UP;
        System.out.println(direction);

    }
}

运行结果:
在这里插入图片描述

完整的结构

枚举类

package com.it.xiaosi.demo02;

/**
 * @Classname : direction
 * @Description : TODO
 * @Author : lin_refuel@qq.com
 */

    public enum direction {
        // 四个常量
        UP("上边","方向信息"),
        LIFT("左边","方向信息"),
        DOWN("下边","方向信息"),
        RIGHT("右边","方向信息");
        // 枚举对象的无参数构造方法
    direction() {
    }
    // 定义两个成员变量
    private String ds;// 方向信息
    private String dd;// 方向 - 例如左

    direction(String ds, String dd) {
        this.ds = ds;
        this.dd = dd;
    }
    // 成员变量的get和set

    public String getDs() {
        return ds;
    }

    public void setDs(String ds) {
        this.ds = ds;
    }

    public String getDd() {
        return dd;
    }

    public void setDd(String dd) {
        this.dd = dd;
    }
}

测试类

package com.it.xiaosi.demo02;

/**
 * @Classname : test
 * @Description : TODO
 * @Author : lin_refuel@qq.com
 */
public class test {
    public static void main(String[] args) {
        // 调用枚举里面的成员,通过枚举类名字进行访问- 类似于访问静态变量 - 通过名字进行访问
        System.out.println(direction.DOWN);
        System.out.println(direction.UP);
        System.out.println(direction.LIFT);
        System.out.println(direction.RIGHT);
        System.out.println("==================");
        // 访问里面私有成员变量ds dd
        System.out.println(direction.RIGHT +"->"+direction.RIGHT.getDd()+":"+direction.RIGHT.getDs());
    }
}

运行结果:
在这里插入图片描述

枚举中常用的一些方法

枚举类

package com.it.xiaosi.demo03;


/**
 * @Classname : direction
 * @Description : TODO
 * @Author : lin_refuel@qq.com
 */
public enum Direction {
    // 定义出枚举里面列表
    UP("向上","w"),DOWN("向下","s"),LEFT("向左","a"),RIGHT("向右","d");
    // 定义两个成员变量
    private String info;// 方向信息
    private String data;// 对应的键位
    // 枚举的无参数构造方法
    Direction() {
    }
    // 枚举的带参数构造方法
    Direction(String info, String data) {
        this.info = info;
        this.data = data;
    }
   // 两个成员变量的get和set
    public String getInfo() {
        return info;
    }

    public void setInfo(String info) {
        this.info = info;
    }

    public String getData() {
        return data;
    }

    public void setData(String data) {
        this.data = data;
    }
}

测试类

package com.it.xiaosi.demo03;

/**
 * @Classname : test
 * @Description : TODO 调用枚举中常用的构造方法
 * @Author : lin_refuel@qq.com
 */
public class test {
    public static void main(String[] args) {
         // 访问Direction里面枚举项
        System.out.println(Direction.UP);// 运行结果 - UP
        // name() - 获取枚举项的名字
        System.out.println(Direction.UP.name());// 运行结果 - UP
        System.out.println("==========================");
        //ordinal - 获取里面枚举项的编号
        System.out.println(Direction.UP.ordinal());// 0
        System.out.println(Direction.DOWN.ordinal());// 1
        System.out.println(Direction.LEFT.ordinal());// 2
        System.out.println(Direction.RIGHT.ordinal());// 3
        System.out.println("==========================");
        // 获取枚举里面枚举项
        Direction up = Direction.valueOf("UP");// 获取到里面的UP枚举
        System.out.println(up); // UP
        // 获取一个枚举类型数组
        Direction[] values = Direction.values();
        for (Direction value : values) {
            System.out.println(value +"< = >" +value.ordinal()+":"+value.getInfo()+":"+value.getData());
        }
    }
}

枚举的应用场景

定义一个枚举类

package com.it.xiaosi.demo04;


/**
 * @Classname : direction
 * @Description : TODO
 * @Author : lin_refuel@qq.com
 */
public enum Direction {
    // 定义出枚举里面列表
    UP("向上","w"),DOWN("向下","s"),LEFT("向左","a"),RIGHT("向右","d");
    // 定义两个成员变量
    private String info;// 方向信息
    private String data;// 对应的键位
    // 枚举的无参数构造方法
    Direction() {
    }
    // 枚举的带参数构造方法
    Direction(String info, String data) {
        this.info = info;
        this.data = data;
    }
   // 两个成员变量的get和set
    public String getInfo() {
        return info;
    }

    public void setInfo(String info) {
        this.info = info;
    }

    public String getData() {
        return data;
    }

    public void setData(String data) {
        this.data = data;
    }
}

测试类

package com.it.xiaosi.demo04;

import java.util.Scanner;

/**
 * @Classname : DirectionTest
 * @Description : TODO
 * @Author : lin_refuel@qq.com
 */
public class DirectionTest {
    public static void main(String[] args) {
        Direction direction = null;
        while (true) {
            switch (new Scanner(System.in).next()) {
                case "w":
                case "W":
                    direction = Direction.UP;
                    break;
                case "s":
                case "S":
                    direction = Direction.DOWN;
                    break;
                case "a":
                case "A":
                    direction = Direction.LEFT;
                    break;
                case "d":
                case "D":
                    direction = Direction.RIGHT;
                    break;
            }
            switch (direction) {
                case UP:
                    System.out.println(direction.name()
                            + "<>" + direction.ordinal() +
                            ":" + direction.getInfo()
                            + "<==>" + direction.getData());
                    break;
                case LEFT:
                    System.out.println(direction
                            + "<>" + direction.ordinal() +
                            ":" + direction.getInfo()
                            + "<==>" + direction.getData());
                    break;
                case DOWN:
                    System.out.println(direction
                            + "<>" + direction.ordinal() +
                            ":" + direction.getInfo()
                            + "<==>" + direction.getData());
                    break;
                case RIGHT:
                    System.out.println(direction.name()
                            + "<>" + direction.ordinal() +
                            ":" + direction.getInfo()
                            + "<==>" + direction.getData());
                    break;
            }
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/391063.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

关于VIT(Vision Transformer)的架构记录

在VIT模型设计中&#xff0c;尽可能地紧密遵循原始的Transformer模型&#xff08;Vaswani等人&#xff0c;2017年&#xff09;。这种刻意简化的设置的一个优势是&#xff0c;可扩展的NLP Transformer架构及其高效的实现几乎可以即插即用。 图&#xff1a;模型概述。我们将图像分…

Qt实用技巧:QCustomPlot做北斗GPS显示绝对位置运动轨迹和相对位置运动轨迹图的时,使图按照输入点顺序连曲线

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/136131310 红胖子网络科技博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬…

机器学习入门--LSTM原理与实践

LSTM模型 长短期记忆网络&#xff08;Long Short-Term Memory&#xff0c;LSTM&#xff09;是一种常用的循环神经网络&#xff08;RNN&#xff09;变体&#xff0c;特别擅长处理长序列数据和捕捉长期依赖关系。本文将介绍LSTM模型的数学原理、代码实现和实验结果&#xff0c;并…

MongoDB从入门到实战之.NET Core使用MongoDB开发ToDoList系统(3)-系统数据集合设计

前言 前几章教程我们把ToDoList系统的基本框架搭建好了&#xff0c;现在我们需要根据我们的需求把ToDoList系统所需要的系统集合&#xff08;相当于关系型数据库中的数据库表&#xff09;。接下来我们先简单概述一下这个系统主要需要实现的功能以及实现这些功能我们需要设计那些…

平时积累的FPGA知识点(10)

平时在FPGA群聊等积累的FPGA知识点&#xff0c;第10期&#xff1a; 41 ZYNQ系列芯片的PL中使用PS端送过来的时钟&#xff0c;这些时钟名字是自动生成的吗&#xff1f; 解释&#xff1a;是的。PS端设置的是ps_clk&#xff0c;用report_clocks查出来的时钟名变成了clk_fpga_0&a…

NX二次开发树列表双击快速进入编辑状态

先将这几个树列表回调注释给解开 int TreeColumn0;//定义一个全局边量记录点击的那一列NXOpen::BlockStyler::Tree::BeginLabelEditState OnBeginLabelEditCallback(NXOpen::BlockStyler::Tree *tree,NXOpen::BlockStyler::Node *node,int columID) {if(columnIDTreeColumnID)…

The method toList() is undefined for the type Stream

The method toList() is undefined for the type Stream &#xff08;JDK16&#xff09; default List<T> toList() { return (List<T>) Collections.unmodifiableList(new ArrayList<>(Arrays.asList(this.toArray()))); }

磁体发条概念

使用磁体发条&#xff08;也称为磁弹簧或磁蓄能器&#xff09;作为储能装置是一个有趣的概念&#xff0c;它利用电磁感应原理来存储和释放能量。磁体发条的基本原理是通过旋转一个强磁体&#xff0c;使其通过一个线圈的中心&#xff0c;从而在线圈中产生电流。当磁体停止旋转时…

平时积累的FPGA知识点(11)

平时在FPGA群聊等积累的FPGA知识点,第11期: 51 可以把dcp文件封装到自己ip里吗? 解释:不可以 52 fifo的异步复位要做异步复位同步释放吗? 解释:要跟写时钟同步,所以需要在ip外部做一下同步释放 53 vivado报错 Phase 6.1 Hold Fix Iter Phase 6.1.1 Update Timing …

下一代Windows系统曝光:基于GPT-4V,Agent跨应用调度,代号UFO

下一代Windows操作系统提前曝光了&#xff1f;&#xff1f; 微软首个为Windows而设的智能体&#xff08;Agent&#xff09; 亮相&#xff1a; 基于GPT-4V&#xff0c;一句话就可以在多个应用中无缝切换&#xff0c;完成复杂任务。整个过程无需人为干预&#xff0c;其执行成功…

PANTONE(R)_colorist 潘通色号查询软件

PANTONE_colorist 潘通色号查询 查找颜色一栏输入对应的色号&#xff0c;即可显示对应的图案。 下载 https://download.csdn.net/download/jintaihu/19340557

2024年最新onlyfans虚拟信用卡订阅教程

一、Onlyfans是什么&#xff1f; OnlyFans是一个允许创作者分享自己的独家内容的平台&#xff0c;简称o站。这个平台允许创作者创建一个订阅服务&#xff0c;粉丝需要支付费用才能访问其独家内容。 本文将教你如何使用虚拟卡在OnlyFans上进行充值。 二、如何使用虚拟卡支付 O…

【测试】测试概念篇和基础篇

目 录 一.了解软件测试的基础概念1.需求2.测试用例3.BUG 二.开发模型和测试模型1.瀑布模型2.螺旋模型3.增量模型和迭代模型4.敏捷模型 三.软件测试模型V模型W模型 四.BUG篇1. 如何合理的创建 bug2. bug 级别3. bug 的生命周期4. 跟开发产生争执怎么办 一.了解软件测试的基础概念…

springboot190基于springboot框架的工作流程管理系统的设计与实现

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

循序渐进-讲解Markdown进阶(Mermaid绘图)-附使用案例

Markdown 进阶操作 查看更多学习笔记&#xff1a;GitHub&#xff1a;LoveEmiliaForever Mermaid官网 由于CSDN对某些Mermaid或Markdown语法不支持&#xff0c;因此我的某些效果展示使用图片进行 下面的笔记内容全部是我根据Mermaid官方文档学习的&#xff0c;因为是初学者所以…

分布式锁redisson

文章目录 1. 分布式锁1.1 基本原理和实现方式对比synchronized锁在集群模式下的问题多jvm使用同一个锁监视器分布式锁概念分布式锁须满足的条件分布式锁的实现 1.2 基于Redis的分布式锁获取锁&释放锁操作示例 基于Redis实现分布式锁初级版本ILock接口SimpleRedisLock使用示…

解决LeetCode编译器报错的技巧:正确处理位操作中的数据类型

一天我在leetcode上刷题时&#xff0c;遇到了这样的题目&#xff1a; 随即我写了如下的代码&#xff1a; int convertInteger(int A, int B) {int count 0;int C A ^ B;int flag 1;while(flag){if (C & flag){count;}flag<<1;}return count;} 但LeetCode显示如下…

Linux常见指令(一)

一、基本指令 1.1ls指令 语法 &#xff1a; ls [ 选项 ][ 目录或文件 ] 功能&#xff1a;对于目录&#xff0c;该命令列出该目录下的所有子目录与文件。对于文件&#xff0c;将列出文件名以及其他信息。 常用选项&#xff1a; -a 列出目录下的所有文件&#xff0c;包括以 .…

第9章 网络编程

9.1 网络通信协议 通过计算机网络可以实现多台计算机连接&#xff0c;但是不同计算机的操作系统和硬件体系结构不同&#xff0c;为了提供通信支持&#xff0c;位于同一个网络中的计算机在进行连接和通信时必须要遵守一定的规则&#xff0c;这就好比在道路中行驶的汽车一定要遵…

实验二 物理内存管理-实验部分

目录 一、知识点 1、计算机体系结构/内存层次 1.1、计算机体系结构 1.2、地址空间&地址生成 1.3、伙伴系统&#xff08;Buddy System&#xff09; 2、非连续内存分配 2.1、段式存储 2.2、页式存储 2.3、快表和多级页表 2.4、段页式存储 3、X86的特权级与MMU 3.…