Java 枚举教程

Java 枚举是一种特殊的类,用于表示一组固定的常量值。枚举类使用 enum 关键字来定义,通常用于表示一组相关的常量,比如季节、月份、星期天等。本文将详细介绍 Java 枚举的基本概念、使用方法以及一些高级用法。

1. 定义枚举类

枚举类使用 enum 关键字来定义,各个常量使用逗号 , 来分割。

示例:

enum Color {RED, GREEN, BLUE;
}
2. 使用枚举

可以像使用普通类一样来使用枚举类。

示例:

enum Color {RED, GREEN, BLUE;
}public class Test {public static void main(String[] args) {Color c1 = Color.RED;System.out.println(c1);}
}

执行结果:

RED
3. 内部类中使用枚举

枚举类也可以声明在内部类中。

示例:

public class Test {enum Color {RED, GREEN, BLUE;}public static void main(String[] args) {Color c1 = Color.RED;System.out.println(c1);}
}

   执行结果:

RED
4. 迭代枚举元素

可以使用 for 语句来迭代枚举元素。

示例:

enum Color {RED, GREEN, BLUE;
}public class MyClass {public static void main(String[] args) {for (Color myVar : Color.values()) {System.out.println(myVar);}}
}

执行结果:

RED
GREEN
BLUE
5. 在 switch 中使用枚举类

枚举类常应用于 switch 语句中。

示例:

enum Color {RED, GREEN, BLUE;
}public class MyClass {public static void main(String[] args) {Color myVar = Color.BLUE;switch (myVar) {case RED:System.out.println("红色");break;case GREEN:System.out.println("绿色");break;case BLUE:System.out.println("蓝色");break;}}
}

执行结果:

蓝色
6. values(), ordinal()valueOf() 方法

enum 定义的枚举类默认继承了 java.lang.Enum 类,并实现了 java.lang.Serializablejava.lang.Comparable 两个接口。以下是 values(), ordinal()valueOf() 方法的用法:

  • values() 返回枚举类中所有的值。
  • ordinal() 返回枚举常量的索引。
  • valueOf() 返回指定字符串值的枚举常量。

示例:

enum Color {RED, GREEN, BLUE;
}public class Test {public static void main(String[] args) {Color[] arr = Color.values();for (Color col : arr) {System.out.println(col + " at index " + col.ordinal());}System.out.println(Color.valueOf("RED"));// System.out.println(Color.valueOf("WHITE")); // 会抛出 IllegalArgumentException}
}

执行结果:

RED at index 0
GREEN at index 1
BLUE at index 2
RED
7. 枚举类成员

枚举类可以包含变量、方法和构造函数。构造函数只能使用 private 修饰符,所以外部无法调用。

示例:

enum Color {RED, GREEN, BLUE;private Color() {System.out.println("Constructor called for : " + this.toString());}public void colorInfo() {System.out.println("Universal Color");}
}public class Test {public static void main(String[] args) {Color c1 = Color.RED;System.out.println(c1);c1.colorInfo();}
}

执行结果:

Constructor called for : RED
Constructor called for : GREEN
Constructor called for : BLUE
RED
Universal Color
8. 高级用法:枚举和抽象方法

枚举既可以包含具体方法,也可以包含抽象方法。如果枚举类具有抽象方法,则枚举类的每个实例都必须实现它。

示例:

enum Color {RED {public String getColorInfo() {return "Color is Red";}},GREEN {public String getColorInfo() {return "Color is Green";}},BLUE {public String getColorInfo() {return "Color is Blue";}};public abstract String getColorInfo();
}public class Test {public static void main(String[] args) {for (Color color : Color.values()) {System.out.println(color.getColorInfo());}}
}

执行结果:

Color is Red
Color is Green
Color is Blue

通过以上内容,我们了解了 Java 枚举的基本概念、使用方法、以及一些高级用法。希望这个教程能帮助你更好地掌握 Java 枚举的使用。

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

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

相关文章

GitHub 站点打不开

遇到的问题 您是否遇到过GitHub网站打不开的情况,正如下图所示: 解决方案 以下是一些常见的解决方案: 1. 检查网络连接 确保你的设备已连接到互联网。尝试访问其他网站,确保不是你的网络问题。 C:\Vinca>ping github.…

Vue+SpringBoot实现仿网盘项目

目录 一、效果展示 二、前端代码 三、后端代码及核心解释 四、进阶开发与思路 一、效果展示 1.1读取文件夹内的文件 1.2删除功能 1.3 上传文件 1.4 文件下载 对应的网盘实际地址与对应下载内容: 二、前端代码 2.1 创建vue项目(需要有vuex与router&…

称重传感器有哪些种类

有关称重传感器的知识,称重传感器是众多传感器产品中的一种,也是很常用的传感器之一,那么称重传感器有哪些种类,称重传感器的分类方式是什么样的,一起来了解下。 称重传感器的分类 主要有六种称重传感器类型&#xf…

C++笔试真题

可变分区管理方案 最佳适应:空闲区按容量递增最坏适应:空闲区按容量递减首先适应:空闲区按地址递增 C的结构体中有构造函数。 Linux新建用户或组 useradd:命令用于建立用户账号usermod:修改用户账号groupadd&#…

【模块化与包管理】:解锁【Python】编程的高效之道

目录 1.什么是模块? 2. 模块的导入过程 3. 理解命名空间 4. import语句的多种形式 5. 模块的执行与重新导入 6. 包(Package) 7. sys模块和os模块 sys模块 常用属性 示例:使用sys模块 os模块 常用功能 示例&#xff1…

【鸿蒙学习笔记】使用动画

官方文档:使用动画 目录标题 属性动画:通用属性发生改变时而产生的属性渐变效果animationanimateTo自定义属性动画 AnimatableExtend 转场动画:是页面或组件的切换动画 , 显示/隐藏 切换时的动画出现/消失转场:实现一个组件出现或…

redis内存分析

阿里云redis集群对key进行hash后保存在对应的后端节点,使每个节点的key数量大致相同,但是如果存在大key,就会导致单个节点内存用满,可以使用redis-rdb-tools 或rdr来对内存进行分析。 redis-rdb-tools redis-rdb-tools通过对dum…

【Superset】dashboard 自定义URL

URL设置 在发布仪表盘(dashboard)后,可以通过修改看板属性中的SLUG等,生成url 举例: http://localhost:8090/superset/dashboard/test/ 参数设置 以下 URL 参数可用于修改仪表板的呈现方式:此处参考了官…

SolidWorks滚花螺栓制作-cnblog

目标 规划基准图形 确定尺寸,单位mm 我 对固定好的图形进行旋转 倒角 设置螺纹 注意改变深度为15mm 收尾位置补全 滚花 建立基准面 制作多边形 添加穿透 扫描切除 圆周阵列 成品完成

春风得意特斯拉(六)

占据顶流的炼金术 科技企业的创始人,也是品牌传播的载体和IP,他们自觉或不自觉的人设和流量会自动加持到品牌身上,让品牌和人设双向赋能,成为媒体的流量宠儿。纵观全球,科技行业创始人个人品牌打造之路也各有千秋。国外…

【深度学习】手动完成线性回归!

🍊嗨,大家好,我是小森( ﹡ˆoˆ﹡ )! 易编橙终身成长社群创始团队嘉宾,橙似锦计划领衔成员、阿里云专家博主、腾讯云内容共创官、CSDN人工智能领域优质创作者 。 易编橙:一个帮助编程小…

现代码头装卸系统:技术创新与效率提升

引言 码头装卸系统在全球贸易和物流链中扮演着至关重要的角色。随着全球化进程的加快,国际贸易量不断增加,港口作为货物进出主要枢纽,其装卸效率直接影响到整个物流链的运作效率和成本。一个高效、现代化的码头装卸系统不仅能提高港口的货物处…

JVM是如何创建一个对象的?

哈喽,大家好🎉,我是世杰。 本文我为大家介绍面试官经常考察的**「Java对象创建流程」** 照例在开头留一些面试考察内容~~ 面试连环call Java对象创建的流程是什么样?JVM执行new关键字时都有哪些操作?JVM在频繁创建对象时,如何…

JVM垃圾回收器详解

垃圾回收器 JDK 默认垃圾收集器(使用 java -XX:PrintCommandLineFlags -version 命令查看): JDK 8:Parallel Scavenge(新生代) Parallel Old(老年代) JDK 9 ~ JDK20: G1 堆内存中…

CVE-2024-6387Open SSH漏洞彻底解决举措(含踩坑内容)

一、漏洞名称 OpenSSH 远程代码执行漏洞(CVE-2024-6387) 二、漏洞概述 Open SSH是基于SSH协议的安全网络通信工具,广泛应用于远程服务器管理、加密文件传输、端口转发、远程控制等多个领域。近日被爆出存在一个远程代码执行漏洞,由于Open SSH服务器端…

2024年夏季德旺杯数学素养水平测试

此为小高组的测试,不过德旺杯主要看获奖情况,选择学员入营

基于考研题库小程序V2.0实现倒计时功能板块和超时判错功能

V2.0 需求沟通 需求分析 计时模块 3.1.1、功能描述←计时模块用于做题过程中对每一题的作答进行30秒倒计时,超时直接判错,同时将总用时显示在界面上;记录每次做题的总用时。 3.1.2、接口描述←与判定模块的接口为超时判定,若单题用时超过 …

人工智能和机器学习 (复旦大学计算机科学与技术实践工作站)20240703(上午场)人工智能初步、mind+人脸识别

前言 在这个科技日新月异的时代,人工智能(AI)已经逐渐渗透到我们生活的方方面面,从智能家居到自动驾驶,无一不彰显着AI的强大潜力。而人脸识别技术作为AI领域的一项重要应用,更是以其高效、便捷的特点受到了…

萤石揽获2024葵花奖17项重磅大奖 登顶荣誉之巅

7月9日,第八届葵花奖智能家居评选颁奖盛典在中国建博会(广州)广交会展馆隆重举行。萤石共斩获横跨智能锁、智能家居摄像机、智能清洁、全屋智能以及物联网云平台等多个领域的17项大奖,创下行业最多记录,并问鼎金至尊奖…

记录|C#安装+HslCommunication安装

记录线索 前言一、C#安装1.社区版下载2.VS2022界面设置 二、HslCommunication安装1.前提2.安装3.相关文件【重点】 更新记录 前言 初心是为了下次到新的电脑上安装VS2022做C#上机位项目时能快速安装成功。 一、C#安装 1.社区版下载 Step1. 直接点击VS2022,跳转下…