java中的枚举概述

        枚举指的是将一个事物的所有情况列举出来,这个概念在数学中的概率那一块经常有所体现。用一个简单的例子加以说明,我们对投掷两个骰子时出现的点数进行记录,当把所有可能出现的情况都列举出来时,所体现的就是枚举的概念。这里可能引起误会的是,有人认为枚举要做实际试验才能完成,比如对抛硬币的情况进行枚举,那么就要实际投掷硬币来进行记录。其实枚举是说穷尽一切可能,而我们都知道投掷一枚硬币只有正面朝上和反面朝上两种可能,当然你要是实在要加上硬币可能立起来的情况也不无不可,你只要知道,当用某种手段将抛硬币可能出现的所有情况都列举出来时,用的就是枚举法,并不一定要亲自试验。

        在java中,有时会需要我们编写一系列的常量,比如定义一个周的时间,一个班级的所有学生的名字,一年的季节,一年的的所有节气等,这时可以直接定义一个类,然后在这个类中定义相关的常量并进行赋值即可,当要使用这个常量时只需要调用这个类来了进行访问即可,就像在下面的这个程序中对一年四季进行了定义,使用时通过类名来访问相关常量即可。但是这样有两个弊端,一是如果不进行说明在打印的结果中我们很难理解每一个数字代表的实际意义,二是如果涉及大批量的数据比如编写一年的所有节气时代码的冗杂程度会明显提高。为了提高代码的可读性变更且减少许多不必要的工作,java中的枚举类便应运而生了。

package cn.jiangchen.enmu;

public class MySeason {
    public static final int SPRING = 0;
    public static final int SUMMER = 1;
    public static final int AUTUMN = 2;
    public static final int WINTER = 3;

    public static void main(String[] args) {
        System.out.println(MySeason.SPRING);
        System.out.println(MySeason.SUMMER);
        System.out.println(MySeason.AUTUMN);
        System.out.println(MySeason.WINTER);
    }
}

         java中的枚举隐性继承自java.lang.Enum,因此枚举的本质依然是类,只不过在这个类中只定义了常量,并且这些常量不需要进行赋值操作,当你在枚举类中输入常量名称时,系统会默认为这些常量是由public static final修饰的,因此你也不需要书写修饰符以及相关关键字,并且当你写入常量时,系统会自动给这些常量进行赋值操作,你也不需要再对其进行赋值操作。更加令人意外的是,当你对这些常量的本身进行打印操作的时候,它的打印结果就是它的常量名,因此你也不需要在意系统给你的这个常量赋了一个什么样的值。

        java中的枚举的定义格式为:

                        enum 枚举名 {

                        枚举体(常量列表)

                }

通过这个格式就可以定义一个枚举类型。

        枚举中枚举体的访问依旧遵循类中常量的访问规则。但是要注意的是在枚举中有一个遍历操作,这里涉及到了枚举中的方法values()。这个方法返回的是一个数组,这个数组中储存了枚举体中的所有元素,对这个数组进行遍历操作就是对枚举进行遍历操作。并且这里进行打印操作的时候,它的返回值依旧是常量名称,并不是系统赋给常量的各种类型的值。

        此外,枚举还可以和switch语句联合使用,当往switch语句中传入一个属于枚举的数组时,switch语句中case后面的情况就可以是枚举体中的内容。以下为演示代码:

package cn.jiangchen.enmu;

import java.io.RandomAccessFile;
import java.util.Random;
/**
 * 测试枚举
 */
public class TestEnum {
    public static void main(String[] args) {
        System.out.println(Season.AUTUMN);

        //枚举遍历
        for(Week k :Week.values()){   //Week.values()返回的Week[]中包含了所有的枚举元素
            System.out.print(k+"\t");
        }
        System.out.println();

        //int a = new Random().nextInt(4);
        int b = new Random().nextInt(4);
         int a = (int)(Math.random()*4);
        switch(Season.values()[a]){
            case SPRING :
                System.out.println("春天");
                break;
            case SUMMER :
                System.out.println("夏天");
                break;
            case AUTUMN :
                System.out.println("秋天");
                break;
            case WINTER :
                System.out.println("冬天");
                break;
        }

    }
}
enum Season {
    SPRING,SUMMER,AUTUMN,WINTER
        }
enum Week{
    星期一,星期二,星期三,星期四,星期五,星期六,星期天
}

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

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

相关文章

C++_类型转换

文章目录 学习目标:1.static_cast2. reinterpret_cast3.const_cast4. dynamic_cast 学习过程1.static_cast2. reinterpret_cast3.const_cast在这里插入图片描述4. dynamic_cast 学习目标: 标准C为了加强类型转换的可视性,引入了四种命名的强…

Web程序设计-实验03 JavaScript语言基础

题目 【实验主题】 素数问题求解。计算(判断) 1~100中哪些是素数、哪些是合数。 素数也称为质数,是只能被1及其自身整除的自然数。与素数相对应的是合数,合数可以被分解为若干个素数的乘积,这些素数称为这个合数的质…

IntelliJ-platform plugIn 插件开发专题内容介绍,学习指导(一)

这系列文章出炉对于笔者来说确实不容易,历时快两年了,先后迭代了3版本,暂时与官方最新版本API同步(2024.03),文章内容覆盖2022~2024版内容 专题由来 最早接触插件开发是源于公司一个国际化项目&#xff0c…

什么是网络安全,企业如何做好网络安全等级评测

网络安全从其本质上讲就是网络上的信息安全,指网络系统的硬件、软件及数据受到保护。不遭受破坏、更改、泄露,系统可靠正常地运行,网络服务不中断。从用户的角度,他们希望涉及到个人和商业的信息在网络上传输时受到机密性、完整性…

Meta Llama 3 简介

文章目录 要点我们对 Llama 3 的目标最先进的性能模型架构训练数据扩大预训练规模指令微调与 Llama 3 一起建造系统级责任方法大规模部署 Llama 3Llama 3 的下一步是什么?立即尝试 Meta Llama 3 本文翻译自:https://ai.meta.com/blog/meta-llama-3/ 要点…

【个人博客搭建】(5)Sqlsugar实体创建数据库数据

1、在appsettings.json文件中配置SqlServer数据库连接字符串信息。(后续考虑添加MySQL数据库等类型) "DBS": [/*对应下边的 DBTypeMySql 0,SqlServer 1,*/{"ConnId": "plateau.poetize.2024","DBType": 1,&qu…

便携式HD-SDI模拟源测试设备

便携式HD-SDI模拟源测试设备 平台简介 便携式手提CameraLink模拟源测试设备,以PCIe的HD-SDI播出卡和X86主板为基础,构建便携式的手提设备。 平台默认操作系统为win7 64位系统;具备丰富的外设接口,如VGA、HDMI、千兆网口、USB2.0/3…

ADOP 万兆电口光模块:SFP+转RJ45端口解决方案

🌵在数据中心的接入层中,大多数服务器网卡(NIC)和存储设备都采用10GBASE-T RJ45端口,而与之相连的TOR(机架顶部)交换机通常配备SFP端口,且二者无法直接相连。为了解决该问题&#xf…

[大模型]Qwen-7B-hat Transformers 部署调用

Qwen-7B-hat Transformers 部署调用 环境准备 在autodl平台中租一个3090等24G显存的显卡机器,如下图所示镜像选择PyTorch–>2.0.0–>3.8(ubuntu20.04)–>11.8 接下来打开刚刚租用服务器的JupyterLab,并且打开其中的终端开始环境配置、模型下…

AI大模型探索之路-应用篇17:GLM大模型-大数据自助查询平台架构实践

文章目录 前言一、技术架构设计二、本地知识库准备三、SQLServer服务1. 数据库准备步骤1:安装MySQL数据库步骤2:启动MySQL数据库步骤3:登录MySQL数据库步骤4:创建数据库用户glm步骤5:给数据库用户赋权限步骤6&#xff…

分布式锁(Redis)

一、序言 本文和大家聊聊分布式锁以及常见的解决方案。 二、什么是分布式锁 假设一个场景:一个库存服务部署在上面三台机器上,数据库里有 100 件库存,现有 300 个客户同时下单。并且这 300 个客户均摊到上面的三台机器上(即三台…

AI绘画 究竟在哪些方面降低了门槛

AI绘画的产物是图像。图像对人类的认知、情感和文化发展起着重要的作用,包括信息传递、创造性表达、历史记录、审美享受和交流。 从原来的纸笔调色板到数字时代的数字板、绘图软件,再到AI绘画时代,任何人都可以用几行简单的文字创作出高质量…

在PostgreSQL中如何创建和使用自定义函数,包括内置语言(如PL/pgSQL)和外部语言(如Python、C等)?

文章目录 一、使用内置语言 PL/pgSQL 创建自定义函数示例代码使用方法 二、使用外部语言 Python 创建自定义函数安装 PL/Python 扩展示例代码使用方法 三、使用外部语言 C 创建自定义函数编写 C 代码编译为共享库在 PostgreSQL 中注册函数注意事项 总结 PostgreSQL 是一个强大的…

【Java开发指南 | 第十七篇】Java 方法

读者可订阅专栏:Java开发指南 |【CSDN秋说】 文章目录 简介语法实例构造方法 简介 Java中的方法是用来执行特定任务的一组语句,可以重复使用。它们包含在类或对象中,并通过调用来执行。 举个例子,println() 是一个方法&#xff…

论文阅读:BEVBert: Multimodal Map Pre-training for Language-guided Navigation

BEVBert:语言引导导航的多模态地图预训练 摘要 现存的问题:目前大多数现有的预训练方法都采用离散的全景图来学习视觉-文本关联。这要求模型隐式关联全景图中不完整、重复的观察结果,这可能会损害智能体的空间理解。 本文解决方案&#xf…

Android开发:应用百度智能云中的身份证识别OCR实现获取个人信息的功能

百度智能云: 百度智能云是百度提供的公有云平台,于2015年正式开放运营。该平台秉承“用科技力量推动社会创新”的愿景,致力于将百度在云计算、大数据、人工智能的技术能力向社会输出。 百度智能云为金融、城市、医疗、客服与营销、能源、制造…

【漏洞复现】泛微e-cology ProcessOverRequestByXml接口存在任意文件读取漏洞

漏洞描述 泛微e-cology依托全新的设计理念,全新的管理思想。 为中大型组织创建全新的高效协同办公环境。 智能语音办公,简化软件操作界面。 身份认证、电子签名、电子签章、数据存证让合同全程数字化。泛微e-cology ProcessOverRequestByXml接口存在任意文件读取漏洞 免责声…

怎么看自己是不是公网IP?

当我们需要进行网络连接或者网络配置的时候,经常会遇到需要知道自己是否拥有公网IP的情况。公网IP是全球唯一的IP地址,在互联网上可直接访问和被访问,而私有IP则是在本地网络中使用,无法从互联网上直接访问。我们将介绍如何查看自…

Java - 阿里巴巴命名规范

文章目录 前言一、编程规约(一) 命名风格(二) 常量定义(三) 代码格式(四) OOP 规约(五) 日期时间(六) 集合处理(七) 并发处理(八) 控制语句(九) 注释规约(十) 前后端规约(十一) 其他 二、异常日志(一) 错误码(二) 异常处理(三) 日志规约 三、单元测试四、安全规约五、MySQL 数据…

C# winform s7.net expected 22 bytes.”

S7.Net.PlcException:“Received 12 bytes: 32-02-00-00-00-00-00-00-00-00-81-04, expected 22 bytes.” 原因是博图的连接机制未勾选