Java枚举(Enum)的使用

news2024/11/17 10:26:58

目录

一、枚举类型的定义

二、枚举类型的使用

(一)、枚举类型的常用方法

(二)、枚举的简单使用

(1)、和switch的搭配使用

(2)、枚举类型的values方法

(3)、枚举类型的valueOf方法

(4)、枚举类型的compareTo方法

三、优点和缺点


一、枚举类型的定义

        我们需要将不同变量编号时,通常将其变量进行赋值为1,2,3...但是这么做有时候会吧1误以为某个变量,这时我们可以直接用枚举来组织,这样一来就有了枚举类型。

如图:

上面的变量都有序了,上面变量没赋值,序号默认为0,1,2

二、枚举类型的使用

(一)、枚举类型的常用方法

(二)、枚举的简单使用

先创建一个枚举类

      代码如下:

public enum TestEnum {
    RED(1, "红色"),GREEN(2, "绿色"),BLACK(3, "黑色");
    private int ordinal;
    private String color;
    //构造方法默认为私有的
    private TestEnum(int ordinal, String color) {
        this.ordinal = ordinal;
        this.color = color;
    }

        (1)、和switch的搭配使用

代码如下:

 public static void main(String[] args) {
        TestEnum color = RED;
        switch (color) {
            case RED:
                System.out.println("红色");
                break;
            case GREEN:
                System.out.println("绿色");
                break;
            case BLACK:
                System.out.println("黑色");
                break;
            default:
                System.out.println("error");
                break;
        }
    }

这种情况会打印  红色

(2)、枚举类型的values方法

代码如下:

public static void main(String[] args) {
        TestEnum[] testEnum = TestEnum.values();
        for(int i = 0; i < testEnum.length; i++) {
            //打印枚举所有变量的序号
            System.out.println(testEnum[i].ordinal);
            //打印枚举所有变量的下标
            System.out.println(testEnum[i].ordinal());
            //打印枚举所有变量的color值
            System.out.println(testEnum[i].color);
        }

结果如下

(3)、枚举类型的valueOf方法

代码如下:

public static void main(String[] args) {
        //以普通字符串转换为枚举实例
        TestEnum testEnum = TestEnum.valueOf("GREEN");
        System.out.println(testEnum);
    }

结果如下:

(4)、枚举类型的compareTo方法

代码如下:

public static void main(String[] args) {
        //比较两个枚举成员定义时的顺序
        System.out.println(RED.compareTo(BLACK));
    }

结果如下:

三、优点和缺点

优点:

        1、枚举具有内置方法,代码更简洁,优雅

        2、枚举常量更具安全性

缺点:不能继承,无法扩展


都看到这里了,点个赞再走呗,谢谢谢谢谢

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JAVA毕业设计103—基于Java+Springboot+vue的药店管理系统(源码+数据库)

基于JavaSpringbootvue的药店管理系统(源码数据库) 一、系统介绍 本系统前后端分离 -功能: 登录、药库药品管理、统计查询、药房管理、物资管理、挂号管理、账号管理、角色管理、权限管理、登录日志管理、药品管理、药品类型管理、客人类型管理 二、所用技术 后端技术栈&a…

PCL 透视投影变换(OpenGL)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 在现实生活中,我们总会注意到离我们越远的东西看起来更小。这个神奇的效果被称之为透视(Perspective)。透视的效果在我们看一条无限长的高速公路或铁路时尤其明显,正如下面图片显示的这样: 由于透视的原因,平行线…

优雅草蜻蜓z系统暗影版前台崩溃,后台提示:系统接口异常502,java项目管理yyc-admin后台管理系统服务无法启动的解决方案

蜻蜓z系统暗影版提示系统接口异常502 蜻蜓z系统系统接口异常502&#xff0c;java项目管理yyc-admin后台管理系统服务无法启动&#xff0c;解决方案 系统稳定运行一些时间后突然由于问题造成无法启动&#xff0c;提示接口异常&#xff1a; 原因过程分析&#xff1a; 现象&am…

【Docker】Docker Swarm介绍与环境搭建

为什么不建议在生产环境中使用Docker Compose 多机器如何管理&#xff1f;如何跨机器做scale横向扩展&#xff1f;容器失败退出时如何新建容器确保服务正常运行&#xff1f;如何确保零宕机时间&#xff1f;如何管理密码&#xff0c;Key等敏感数据&#xff1f; Docker Swarm介…

计算机视觉中的数据预处理与模型训练技巧总结

计算机视觉主要问题有图像分类、目标检测和图像分割等。针对图像分类任务&#xff0c;提升准确率的方法路线有两条&#xff0c;一个是模型的修改&#xff0c;另一个是各种数据处理和训练的技巧(tricks)。图像分类中的各种技巧对于目标检测、图像分割等任务也有很好的作用&#…

制造业中的微小缺陷检测——应用场景分析与算法选择(YoloV8/CANet)

一、缺陷检测任务 缺陷检测的任务通常可以分为三个主要阶段&#xff0c;包括缺陷分类、缺陷定位和缺陷分割。 1.缺陷分类 缺陷分类是检测过程的第一步&#xff0c;目的是将检测到的缺陷区域分类为不同的类别&#xff0c;通常是根据缺陷的性质或类型进行分类。分类的类别包括…

深度学习使用Keras进行迁移学习提升网络性能

上一篇文章我们用自己定义的模型来解决了二分类问题,在20个回合的训练之后得到了大约74%的准确率,一方面是我们的epoch太小的原因,另外一方面也是由于模型太简单,结构简单,故而不能做太复杂的事情,那么怎么提升预测的准确率了?一个有效的方法就是迁移学习。 迁移学习其…

C#反射的应用及相关代码示例

在C#编程中&#xff0c;反射是一种强大的工具&#xff0c;它允许程序在运行时动态地获取类型信息、访问和操作类成员。反射为开发人员提供了更大的灵活性和扩展性&#xff0c;使得我们可以编写更加通用和动态的代码。本文将探讨C#反射的应用&#xff0c;并提供一些相关的代码示…

程序员加油!最新最全Java面试题及解答(上百道题,近5w字,包括Redis、MySQL、框架、微服务、消息中间件、集合、jvm,多线程、常见技术场景)

刚看完黑马教程的新版Java面试专题视频教程&#xff0c;java八股文面试全套真题深度详解&#xff08;含大厂高频面试真题&#xff09;&#xff0c;对面试题分专题整理&#xff0c;方便面试突击 Redis相关面试题 Redis相关面试题 面试官&#xff1a;什么是缓存穿透 ? 怎么解决…

软考系列(系统架构师)- 2016年系统架构师软考案例分析考点

试题一 软件架构&#xff08;质量属性、架构风格对比、根据描述填空&#xff09; 试题二 系统开发&#xff08;用例图参与者、用例关系、类图关系&#xff09; 学生、教师、管理员、时间、打印机【问题2】&#xff08;7分&#xff09; 用例是对系统行为的动态描述&#xff0c;用…

【强连通+背包】CF1763E

Problem - E - Codeforces 题意 思路 首先&#xff0c;先考虑第一个条件&#xff0c;要保证是p个节点互相到达且节点数最少&#xff0c;一定是个强连通&#xff0c;图的形态一定就是和强连通相关的。 然后&#xff0c;因为在这个前提上&#xff0c;要让单向节点数尽可能多&a…

归并排序与计数排序(含代码)

目录 目录&#xff1a; 1:归并排序递归 2:归并排序的非递归 3&#xff1a;计数排序的思想 1&#xff1a;归并排序递归 思路&#xff1a;归并排序是采用分治算法的一种排序&#xff0c;将两个有序的子数组合并到一个数组中去使得数组完全有序&#xff0c;所以我们先使子数组有序…

CAN测量模块总线负载率,你关注了吗?

一 背景 随着新能源汽车的飞速发展&#xff0c;整车系统日趋复杂&#xff0c;整车性能的可靠性也变得愈发重要。在车辆测试过程中&#xff0c;为应对更加多样的试验需求&#xff0c;传感器的种类和数量会随着测量种类而增加&#xff0c;数据量也会因此变得越发庞大&#xff0c…

docker部署prometheus+grafana服务器监控(一)

docker-compose 部署prometheusgrafana Prometheus Prometheus 是有 SoundCloud 开发的开源监控系统和时序数据库&#xff0c;基于 Go 语言开发。通过基于 HTTP 的 pull 方式采集时序数据&#xff0c;通过服务发现或静态配置去获取要采集的目标服务器&#xff0c;支持多节点工…

Kubernetes 部署 kubeflow1.7.0

KubeFlow 是一个开源的项目&#xff0c;旨在为 Kubernetes 提供可组合、便携式、可扩展的机器学习技术栈。它最初是为了解决在 Kubernetes 上运行分布式机器学习任务所带来的挑战而创建的。Kubernetes 本身是一个容器平台&#xff0c;但在近年来&#xff0c;越来越多的公司开始…

【Html】交通灯问题

效果 实现方式 计时器&#xff1a;setTimeout或setInterval来计时。setInterval和 setTimeout 在某些情况下可能会出现计时不准确的情况。这通常是由于JavaScript的事件循环机制和其他代码执行所需的时间造成的。 问询&#xff1a;通过getCurrentLight将每个状态的持续时间设置…

解密分布式事务:CAP理论、BASE理论、两阶段提交(2PC)、三阶段提交(3PC)、补偿事务(TCC)、MQ事务消息、最大努力通知

文章目录 &#x1f34a; CAP理论&#x1f34a; BASE理论&#x1f34a; 两阶段提交&#xff08;2PC&#xff09;&#x1f389; XA事务 &#x1f34a; 三阶段提交&#xff08;3PC&#xff09;&#x1f34a; 补偿事务&#xff08;TCC&#xff09;&#x1f34a; MQ事务消息&#x1…

web开发初级工程师学习笔记ing(持续更新)!!!

web开发初级工程师学习笔记 前端开发工具实验1 VS Code 初体验介绍 前端开发工具 实验1 VS Code 初体验 介绍 VS Code 环境提供的是一个可以在浏览器中使用原生 VS Code 编辑代码的程序。在该环境中&#xff0c;你可以使用到与本地安装近乎一致的 VS Code 程序来编辑代码文件…

计算机网络(谢希仁)第八版课后题答案(第二章)

1.物理层要解决哪些问题&#xff1f;物理层的主要特点是什么&#xff1f; (1)物理层要尽可能地屏蔽掉物理设备和传输媒体&#xff0c;通信手段的不同&#xff0c;使数据链路层感觉不到这些差异&#xff0c;只考虑完成本层的协议和服务。 (2)给其服务用户&#xff08;数据链路…

IO多路复用技术

IO多路复用 一、概念 IO多路复用技术 是一种 网络通信 的方式&#xff0c;通过这种方式可以同时检测多个 文件描述符&#xff08;这个过程是阻塞的&#xff09;&#xff0c;一旦检测到某一个文件描述符&#xff08;状态是 可读 或者 可写 的&#xff09;是就绪的&#xff0c;…