当前位置: 首页 > news >正文

Java--枚举类型

        Java中枚举类型可以取代一般的常量定义方式,可以将常量封装在类或接口中;枚举类型本质上还是以类的形式存在的,枚举类型继承于java.lang.Enum类,定义一个枚举类型时,每一个枚举类型成员都可以看做是枚举类型的一个实例,这些枚举类型成员默认都被【public+final+static】修饰。

        枚举类型声明提供了一种用户友好的变量定义方法,枚举了某种数据类型所有可能出现的值。

枚举类型的优点:

        1.类型安全;

        2.紧凑有效的数据定义;

        3.可以和程序其他部分完美交互;

        4.运行效率高;

1.定义枚举类型的关键字【enum

2.使用枚举类型设置常量

public enum Constants{

        Constants_A,

        Constants_B,

        Constants_C

}

使用时通过Constants.Constants_A来调用。

3.操作枚举类型成员的方法

枚举类型的常用方法
方法名称返回值类型具体含义使用方法举例
values()枚举成员的数组将枚举类型成员以数组的形式放回枚举类型名称.values()Constants.values()
valueOf()枚举实例对象将普通字符串转换为枚举类型实例枚举类型名称.valuesOf("abc")Constants.valueOf("abc")
compareTo()int型用于比较2个枚举对象在定义时的顺序枚举对象.compareTo()Constants_A.compareTo(Constants_B)
ordinal()int型用于得到枚举成员的位置索引枚举对象.ordinal()Constants_A.ordinal()

3.1 values()方法

        通过此方法获取枚举类型的成员,以数组的形式返回。

package myenum;public class ShowEnum {enum Constants {Constants_A, Constants_B}public static void main(String[] args) {for (int i = 0; i < Constants.values().length; i++) {System.out.println("枚举类型成员变量_" + i + ": " + Constants.values()[i]);}}
}输出:枚举类型成员变量_0: Constants_A枚举类型成员变量_1: Constants_B

3.2 valuesOf()方法

        valuesOf()方法可以将普通字符串转换为枚举类型。

3.3 compareTo()方法

        compareTo()方法用于比较两个枚举类型对象在定义时的顺序。

package myenum;public class EnumMethodTest {enum Constants2 {constantsxxx, Constants_A, Constants_B, constants_C}public static void compare(Constants2 c) {for (int i = 0; i < Constants2.values().length; i++) {System.out.println(c + "与" + Constants2.values()[i] + "的位置比较结果是:" + c.compareTo(Constants2.values()[i]));}}public static void main(String[] args) {compare(Constants2.valueOf("Constants_B"));}
}输出:Constants_B与constantsxxx的位置比较结果是:2Constants_B与Constants_A的位置比较结果是:1Constants_B与Constants_B的位置比较结果是:0Constants_B与constants_C的位置比较结果是:-1

compareTo()方法的返回结果中:1代表方法中的参数在调用对象之前一个位置;0代表方法中的参数两个对象位置相同;-1代表方法中的参数在调用对象之后一个位置。

3.4 ordinal()方法

        ordinal()方法用于获取枚举对象的索引位置。

package myenum;public class EnumIndexTest {enum Constants3 {constantsxxx, Constants_A, Constants_B, constants_C}public static void main(String[] args) {for (int i = 0; i < Constants3.values().length; i++) {System.out.println(Constants3.values()[i] + "的索引是:" + Constants3.values()[i].ordinal());}}
}输出:constantsxxx的索引是:0Constants_A的索引是:1Constants_B的索引是:2constants_C的索引是:3

4.枚举类型中的构造方法

        枚举类型中的构造方法必须是private修饰的。

package myenum;public class EnumConstructorMethod {enum Constants4 {con_A("我是枚举成员A"),       //定义带参数的枚举类型成员,枚举成员间必须,逗号分隔con_B("我是枚举成员B"),con_C("我是枚举成员C"),con_D(3);private String description;private int i = 4;private Constants4() {}private Constants4(String desc) {    //private定义枚举类型的构造方法this.description = desc;}private Constants4(int i) {          //private定义枚举类型的构造方法this.i = this.i + i;}public String getDescription() {    //获取description的值return description;}public int getI() {                 //获取i的值return i;}public static void main(String[] args){for (int i=0; i<Constants4.values().length;i++){System.out.println(Constants4.values()[i]+"调用getDescription()方法的结果为:"+Constants4.values()[i].getDescription());System.out.println(Constants4.values()[i]+"调用getI()方法的结果为:"+Constants4.values()[i].getI());}}}
}输出:con_A调用getDescription()方法的结果为:我是枚举成员Acon_A调用getI()方法的结果为:4con_B调用getDescription()方法的结果为:我是枚举成员Bcon_B调用getI()方法的结果为:4con_C调用getDescription()方法的结果为:我是枚举成员Ccon_C调用getI()方法的结果为:4con_D调用getDescription()方法的结果为:nullcon_D调用getI()方法的结果为:7

相关文章:

Java--枚举类型

Java中枚举类型可以取代一般的常量定义方式&#xff0c;可以将常量封装在类或接口中&#xff1b;枚举类型本质上还是以类的形式存在的&#xff0c;枚举类型继承于java.lang.Enum类&#xff0c;定义一个枚举类型时&#xff0c;每一个枚举类型成员都可以看做是枚举类型的一个实例…...

有没有好用的配音工具?推荐这5款

为什么越来越多的短视频创作者愿意使用配音工具。 除了这些配音工具可以进行批量处理&#xff0c;实现大规模的音频制作&#xff0c;从而提高生产效率。还可以帮助其节约大量的人力&#xff0c;想一下&#xff0c;以前配音&#xff0c;不同的音色、角色需要不同的人来完成&…...

tomcat安装及配置教程

以下是 Tomcat 安装及配置的基本步骤&#xff1a; 下载 Tomcat 并解压缩&#xff1a;在 Apache Tomcat 的官网上下载最新版本的 Tomcat&#xff0c;然后解压缩到你想要安装的目录下&#xff08;比如 /usr/local/tomcat&#xff09;。 配置 PATH 环境变量&#xff1a;在终端中打…...

UNIPOSE: DETECTING ANY KEYPOINTS(2023.10.12)

文章目录 AbstractIntroduction现有的方法存在哪些不足基于此&#xff0c;我们提出了哒哒哒取得惊人的成绩Related Work MethodMULTI -MODALITY PROMPTS ENCODING&#xff08;多模态提示编码&#xff09;Textual Prompt Encoder&#xff08;文本提示编码器&#xff09;Visual P…...

如何用ChatGPT快速写出一份合格的PPT报告

我们【AI写稿专家】的小伙伴中有很多企业高管和公务员&#xff0c;大家经常有写报告写ppt的需求&#xff0c;下面小编给大家介绍一下我们新发布生成PPT的功能&#xff0c;很简单很方便&#xff0c;看完大家不到1分钟就能生成一份拿得出手的PPT报告&#xff0c;再也不用费尽心思…...

Linux内存管理的分页机制

分段机制的原理如下&#xff1a; 分段机制下的虚拟地址由两部分组成&#xff0c;段选择子和段内偏移量。段选择子就保存在段寄存器里面。段选择子里面最重要的是段号&#xff0c;用作段表的索引。段表里面保存的是这个段的基地址、段的界限和特权等级等。虚拟地址中的段内偏移量…...

Unity DOTS系列之托管/非托管Component的区别与性能分析

最近DOTS发布了正式的版本, 我们来分享一下DOTS里面托管与非托管Component的区别与性能分析&#xff0c;方便大家上手学习掌握Unity DOTS开发。托管与非托管的区别在于是不是基于自动垃圾回收的。托管是由垃圾回收器来负责自动回收&#xff0c;非托管需要我们手动来做相关内存管…...

elementui el-upload 上传文件

文章目录 前言一、Html2.上传 总结 前言 在使用element中的el-upload上传文件或者图片时&#xff0c;需要先把el-upload的自动上传改为手动上传:auto-upload“false”然后el-upload内部会调用this.$refs.upload.submit();方法&#xff0c;从而实现多个文件上传。 提示&#xf…...

Python图像处理【15】基于非锐化掩码锐化图像

基于非锐化掩码锐化图像 0. 前言1. 使用 scikit-image filters 模块执行非锐化掩码2. 使用 PIL ImageFilter 模块执行非锐化掩码3. 使用 SimpleITK 执行拉普拉斯锐化4. 使用 OpenCV 实现非锐化掩码小结系列链接 0. 前言 非锐化滤波器是一个简单的锐化算子&#xff0c;通过从原…...

介绍几款Linux 下终极SSH客户端

安全外壳协议&#xff08;Secure Shell&#xff0c;简称 SSH&#xff09;是一种网络连接协议&#xff0c;允许您通过网络远程控制计算机。特别是在Linux命令行模式下&#xff0c;使用SSH&#xff0c;可以很方便管理linux上的运维工作。以下是一些最受欢迎的Linux SSH客户端&…...

项目综合实训,vrrp+bfd,以及策略路由的应用

目录 一&#xff0e; 项目需求 二&#xff0e; Visio设备画图 三&#xff0e; 设备选型 三&#xff0e;vlan规划 四&#xff0e;Ip地址规划 五&#xff0e;实验拓扑图 六&#xff0e;配置过程及结果 项目需求 1.S1作为VLAN10的主网关和根桥&#xff0c;S2作为v…...

[架构之路-246/创业之路-77]:目标系统 - 纵向分层 - 企业信息化的呈现形态:常见企业信息化软件系统 - 客户关系管理系统CRM

目录 前言&#xff1a; 一、企业信息化的结果&#xff1a;常见企业信息化软件 1.1 客户关系管理系统CRM 1.1.1 什么是客户关系管理系统 1.1.2 CRM总体架构 1.1.3 什么类型的企业需要CRM 1.1.4 创业公司在什么阶段需要CRM 1.1.5 研发型创业公司什么时候需要CRM 1.1.6 C…...

python manage.py createsuperuser运行错误

我把思念作笺&#xff0c;随风而去&#xff0c;落在你常路过的那个街角… 错误复现 PS D:\教学文件\Django\djangoProject\webDemo02> python manage.py createsuperuser System check identified some issues:WARNINGS: ?: (urls.W005) URL namespace admin isnt unique…...

解决恶意IP地址攻击:保卫网络安全的有效方法

随着互联网的发展&#xff0c;网络安全威胁变得日益复杂&#xff0c;其中包括恶意IP地址攻击。这些攻击通常是网络犯罪分子的手段之一&#xff0c;用于入侵系统、窃取数据或进行其他恶意活动。本文将探讨如何解决恶意IP地址攻击&#xff0c;以保护网络安全。 恶意IP地址攻击是…...

Android WMS——WMS窗口添加(十)

Android 的 WMS&#xff08;Window Manager Service&#xff09;是一个关键组件&#xff0c;负责管理窗口的创建、显示、布局和交互等。Window 的操作有两大部分&#xff0c;一部分是 WindowManager 来处理&#xff0c;一部分是 WMS 来处理&#xff0c;如下图所示&#xff1a; …...

CVPR 2023 | 主干网络FasterNet 核心解读 代码分析

本文分享来自CVPR 2023的论文&#xff0c;提出了一种快速的主干网络&#xff0c;名为FasterNet。 论文提出了一种新的卷积算子&#xff0c;partial convolution&#xff0c;部分卷积(PConv)&#xff0c;通过减少冗余计算和内存访问来更有效地提取空间特征。 创新在于部分卷积…...

【进阶C语言】数组笔试题解析

本节内容以刷题为主&#xff0c;大致目录&#xff1a; 1.一维数组 2.字符数组 3.二维数组 学完后&#xff0c;你将对数组有了更全面的认识 在刷关于数组的题目前&#xff0c;我们先认识一下数组名&#xff1a; 数组名的意义&#xff1a;表示数组首元素的地址 但是有两个例外…...

vue-router学习(四) --- 动态添加路由

我们一般使用动态添加路由都是后台会返回一个路由表前端通过调接口拿到后处理(后端处理路由)。比如不同权限显示不同的路由。 主要使用的方法就是router.addRoute 添加路由 动态路由主要通过两个函数实现。router.addRoute() 和 router.removeRoute()。它们只注册一个新的路…...

科东软件受邀参加2023国家工业软件大会,共话工业软件未来

10月28日&#xff0c;由中国自动化学会主办的2023国家工业软件大会在浙江湖州开幕。大会以“工业软件智造未来”为主题&#xff0c;一批两院院士、千余名专家学者齐聚一堂&#xff0c;共同探讨工业软件领域前沿理论和技术创新应用问题&#xff0c;共同谋划我国工业软件未来发展…...

ros启动节点的launch文件你真的会写吗?

<launch><!-- 启动节点 --><node name="lidar_data_feature_detection_node" pkg="lidar_data_feature_detection" type="lidar_data_feature_detection" output="screen" />...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手&#xff1a;借助大模型技术&#xff0c;开发能根据用户输入的主题、风格等要求&#xff0c;生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用&#xff0c;帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

Spring Boot面试题精选汇总

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索&#xff08;基于物理空间 广播范围&#xff09;2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

Windows安装Miniconda

一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...

day36-多路IO复用

一、基本概念 &#xff08;服务器多客户端模型&#xff09; 定义&#xff1a;单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用&#xff1a;应用程序通常需要处理来自多条事件流中的事件&#xff0c;比如我现在用的电脑&#xff0c;需要同时处理键盘鼠标…...