当前位置: 首页 > 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" />...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

python打卡day49

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...