【JAVA】最容易忽视的数据类型——枚举

在这里插入图片描述


个人主页:【😊个人主页】
系列专栏:【❤️初识JAVA】


前言

Java枚举是一个特殊的类一般表示一组常量,比如一年的 4个季节,一年的 12 个月份,一个星期的7天,方向有东南西北等。今天就让我们来学习一下在JAVA中这个特殊的类。
在这里插入图片描述

枚举

枚举是一种数据类型,用于定义一组具有相同属性的常量集合。在枚举中,每个常量都有一个名称和一个关联的值,可以通过名称或值来引用常量。枚举常用于减少代码中的魔法数字或字符串,使代码更加清晰易懂

enum Color
{RED, GREEN, BLUE;
}public class Test
{// 执行输出结果public static void main(String[] args){Color c1 = Color.RED;System.out.println(c1);}
}

在这个枚举中,我们定义了三个常量:RedGreenBlue。默认情况下,它们的值分别为0、1和2。我们将枚举中的Red常量分配给myColor变量,并检查myColor是否等于枚举中的Green常量。

Color myColor = Color.Red;
if (myColor == Color.Green)
{// ...
}

内部类里使用枚举

可以在Java内部类中使用枚举,可以通过在内部类中定义枚举类型来实现。

public class Outer {private int x;public void doSomething() {Inner inner = new Inner();inner.doSomethingElse();}private class Inner {private void doSomethingElse() {Status status = Status.IN_PROGRESS;// ...}private enum Status {IN_PROGRESS,COMPLETED,FAILED}}
}

在上面的代码中,内部类inner中定义了一个枚举类型Status。在doSomethingElse()方法中,可以创建枚举类型的实例并使用它们。

迭代枚举元素

在Java中,我们可以使用迭代器(Iterator)来枚举集合中的元素。

List<String> strings = new ArrayList<>();
strings.add("foo");
strings.add("bar");
strings.add("baz");Iterator<String> iterator = strings.iterator();
while (iterator.hasNext()) {String str = iterator.next();System.out.println(str);
}

在这个示例中,我们首先创建了一个包含三个字符串的ArrayList。然后,我们创建一个迭代器对象,并使用while循环来遍历ArrayList中的所有元素。在每次循环迭代时,我们通过调用next()方法获取下一个元素,并将其赋值给一个字符串变量。然后,我们将该字符串打印输出。循环会一直执行,直到没有更多的元素。

需要注意的是,迭代器只能单向遍历集合,不能随意增加或删除元素。如果需要对集合进行修改操作,应该使用集合本身提供的方法进行操作。

在 switch 中使用枚举类

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

public class Main {enum Day {MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY}public static void main(String[] args) {Day day = Day.TUESDAY;switch (day) {case MONDAY:System.out.println("Today is Monday");break;case TUESDAY:System.out.println("Today is Tuesday");break;case WEDNESDAY:System.out.println("Today is Wednesday");break;case THURSDAY:System.out.println("Today is Thursday");break;case FRIDAY:System.out.println("Today is Friday");break;case SATURDAY:System.out.println("Today is Saturday");break;case SUNDAY:System.out.println("Today is Sunday");break;default:System.out.println("Invalid day");break;}}
}

在上面的代码中,我们定义了一个Day枚举类,其中包含一周中的每一天。在main方法中,我们创建了一个Day枚举实例,并在switch语句中使用了这个枚举实例。根据Day的不同值,我们输出不同的结果。

在使用枚举类时,switch语句必须针对枚举类型进行匹配,否则编译器会发出警告。此外,在枚举类型中必须包含一个default分支,以处理可能的无效输入。

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

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

相关文章

10.12作业

以下是一个简单的比喻&#xff0c;将多态概念与生活中的实际情况相联系&#xff1a; 比喻&#xff1a;动物园的讲解员和动物表演 想象一下你去了一家动物园&#xff0c;看到了许多不同种类的动物&#xff0c;如狮子、大象、猴子等。现在&#xff0c;动物园里有一位讲解员&…

吃瓜神奇!企查查、天眼查、天眼销,到底哪家强?

最近&#xff0c;我发现很多人在讨论查企业信息的工具&#xff0c;什么企查查、天眼查、天眼销等&#xff0c;到底哪家强呢&#xff1f; 首先&#xff0c;我们来简单了解一下这些工具。企查查是一款可以帮助用户查询企业信息的工具&#xff0c;通过输入关键词&#xff0c;可以搜…

【VUE】element Table指定字段单元格样式及数据格式化

将列表中的指定字段的数据&#xff0c;根据字典值回显&#xff0c;并修改指定状态的显示样式 <el-tableref"table"height"500px":data"dataList"><template v-for"(item, index) in columns"><el-table-column:key&quo…

【C/C++】使用 g++ 编译器编译 C++ 程序的完全指南

本文介绍了 g 编译器的使用方法和常见参数解释&#xff0c;帮助您编译和构建 C 程序。 引言 在 C 程序开发中&#xff0c;选择一个合适的编译器是至关重要的。g 是 GNU 编译器集合&#xff08;GCC&#xff09;中的 C 编译器&#xff0c;提供了丰富的功能和选项&#xff0c;帮…

嵌入式面试常见问题(一)

目录 1.什么情况下会出现段错误&#xff1f; 2.swap() 函数为什么不能交换两个变量的值 3.一个函数有六个参数 分别放在哪个区&#xff1f; 4.定义一个变量&#xff0c;赋初值和不赋初值分别保存在哪个区&#xff1f; 5.linux查看端口状态的命令 6.结构体中->和.的区…

Tomcat自启动另一种方法

Tomcat自启动另一种方法 问题&#xff1a; 不知道怎么回事&#xff0c;好几台电脑都可以开机自启动tomcat&#xff0c;正常运行项目。一样的配置一样的操作流程&#xff0c;偏偏要运行的机器开机自启动后&#xff0c;项目不能运行&#xff0c;手动重启tomcat又可以用了。网上…

FHRP首跳冗余的解析

首跳冗余的解析 个人简介 HSRP hot standby router protocol 热备份路由协议 思科设备上 HSRP VRRP 华为设备上 VRRP HSRP v1 version 1 HSRP v2 version 2 虚拟一个HSRP虚拟IP地址 192.168.1.1 开启HSRP的抢占功能 通过其他参数 人为调整谁是主 谁是从 &a…

【低代码表单设计器】:创造高效率的流程化办公!

当前&#xff0c;有不少用户朋友对低代码表单设计器挺感兴趣。其实&#xff0c;如果想要实现提质增效的办公效率&#xff0c;创造一个流程化办公&#xff0c;那么确实可以了解低代码技术平台。流辰信息作为服务商&#xff0c;拥有较强的自主研发能力&#xff0c;根据市场的变化…

Maven安装

Maven安装 1、Linux下Maven安装 1.1 下载安装包 maven 官网地址&#xff1a;https://maven.apache.org/download.cgi 安装包下载地址&#xff1a;https://dlcdn.apache.org/maven/maven-3 这里下载 apache-maven-3.3.9-bin.tar.gz 下载后上传到Linux服务器 1.2 安装Mave…

如何不引入第三个中间变量进行两数交换

但在大厂面试中&#xff0c;有一道非常经典的数字交换题目&#xff1a;如何在不引入第三个中间变量的情况下&#xff0c;完成两个数字的交换。 这里可以用到一个数学上的技巧&#xff1a; a a b; b a - b; a a - b; 除了这种先加后减的写法&#xff0c;还有一种先减后加的…

Mybatis入门

Mybatis mybatis是一款优秀的持久层框架&#xff0c;用于简化JDBC的开发。&#xff08;控制层 controller&#xff09;&#xff08;业务层service&#xff09;&#xff08;持久层dao&#xff09;&#xff08;数据库&#xff09; 快速创建springboot-mybatis工程 jdk选11 &am…

MAC m系列docker login报错

错误&#xff1a;ERROR: failed to solve: XXX error getting credentials - err: exit status 1, out: 解决&#xff1a; vi ~/.docker/config.jsonzsxzsx [15时55分55秒] [~] { {"auths": {"harbor-g42c.corp.matrx.team": {"auth": "…

RK平台使用MP4视频做开机动画以及卡顿问题

rk平台android11以后系统都可以使用MP4格式的视频做开机动画,系统源码里面默认使用的是ts格式的视频,其实使用mp4的视频也是可以的。具体修改如下: diff --git a/frameworks/base/cmds/bootanimation/BootAnimation.cpp b/frameworks/base/cmds/bootanimation/BootAnimat…

android Selinux 之 platform

概念&#xff1a; 平台签名&#xff1a;Android.mk 中&#xff0c;定义 LOCAL_CERTIFICATE : platform system权限&#xff1a;AndroidManifest.xml 中声明 android:sharedUserId"android.uid.system" &#xff0c;同时是平台签名 分类&#xff1a; untrusted_…

ubuntu下使用gcc编译c程序: “error: stray ‘\357’ in program“

现象&#xff1a; ubuntu下使用gcc编译c程序: “error: stray ‘\357’ in program“ 尝试查找原因&#xff1a;打开从windos直接粘贴c程序到ubuntu的c代码&#xff0c;发现多了 <200b>&#xff1a; 方案&#xff1a;尝试在vim编辑器删除&#xff0c;多出来的字符后编译…

ARM 按键控制 LED灯,蜂鸣器,风扇

main.c: #include "uart.h" #include "key_it.h" int main() {all_led_init();uart4_init();//串口初始化//中断初始化key_it_config();key3_it_config();buzzer_init();fan_init();while(1){//保证主程序不结束}return 0; }src/key_it.c: #include"…

Java 使用 Easyexcel 导出大量数据

读Excel | Easy Excel 1、 我遇到的数据量超级大&#xff0c;使用传统的POI方式来完成导入导出很明显会内存溢出&#xff0c;并且效率会非常低&#xff1b;2、 数据量大直接使用select * from tableName肯定不行&#xff0c;一下子查出来300w条数据肯定会很慢&#xff1b;3、 …

昇腾910使用记录

一. 压缩文件和解压文件 1. 压缩文件 tar -czvf UNITE-main.tar.gz ./UNITE-main/2. 解压文件 tar -xvf ./UNITE-main/二. CUDA更改为NPU data[label] data[label].cuda() data[instance] data[instance].cuda() data[image] data[image].cuda()更改为 data[label] da…

小程序中使用echarts的相关配置以及折线图案例(简单易懂)

第一步&#xff1a;引入echarts文件--此文件需要下载&#xff1a; 下载地址&#xff1a;点击此处进行下载echarts文件 点击Download ZIP下载压缩包&#xff0c;注意&#xff1a;e-canvas是我从完整的文件中剥离出来的有用的&#xff0c;不会影响项目。 第二步&#xff1a;把整…

ctfshow萌新计划web9-14(正则匹配绕过)

目录 web9 web10 web11 web12 web13 web14 web9 审一下代码&#xff0c;需要匹配到system|exec|highlight才会执行eval函数 先看一下当前目录下有什么 payload&#xff1a;?csystem(ls); index.php是首页&#xff0c;我们看看config.php payload&#xff1a;?csystem…