enum常用方法 - Java

六、enum常用方法

  • 0、准备工作
  • 1、name()
  • 2、ordinal()
  • 3、values()
  • 4、valueOf()
  • 5、compareTo()
  • 6、toString()

说明:使用关键字enum时,会隐式 继承 Enum类,这样我们就可以使用 Enum 类相关的方法。
在这里插入图片描述
在这里插入图片描述

0、准备工作

enum Season2 {
    SPRING("春天", "温暖"), 
    SUMMER("夏天", "炎热"),
    AUTUMN("秋天", "凉爽"),
    WINTER("冬天", "寒冷");
    private String name;
    private String desc;

    private Season2(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }

    public String getName() { return name; }

    public String getDesc() { return desc; }

    @Override
    public String toString() {
        return "Season{" +
                "name='" + name + '\'' +
                ", desc='" + desc + '\'' +
                '}';
    }
}

1、name()

作用:输出枚举对象的名字。

//main方法中
Season2 autumn = Season2.AUTUMN;
System.out.println("=============== 1 name()使用 ===============");
System.out.println(autumn.name());

在这里插入图片描述

2、ordinal()

作用:输出的是该枚举对象的次序/编号,从0开始编号

//main方法中
Season2 autumn = Season2.AUTUMN;
System.out.println("============== 2 ordinal()使用 =============");
System.out.println(autumn.ordinal());

在枚举类Season2中的顺序为:SPRING(“春天”, “温暖”), SUMMER(“夏天”, “炎热”), AUTUMN(“秋天”, “凉爽”), WINTER(“冬天”, “寒冷”);
在这里插入图片描述

3、values()

使用:类名.values()
作用:返回一个数组,数组包含定义的所有枚举对象
在源码中没有看到。使用 javap 反编译的时候可以看到:
public static com.hspedu.enum_.Season2[] values();
在这里插入图片描述

System.out.println("============== 3 values()使用 ==============");
Season2[] values = Season2.values();
for (Season2 season: values) {
     //增强for循环: 每次从values数组中取出一个成员,丢给season
     System.out.println(season);
 }

在这里插入图片描述

4、valueOf()

作用:将字符串转换成枚举对象,要求字符串必须为已有的常量名,否则报异常
执行流程:
① 根据给定的"Autumn" 到 Season2枚举类中寻找
② 如果找到了就返回;没有找到就报错。

System.out.println("============== 4 valueOf()使用 =============");
Season2 autumn1 = Season2.valueOf("AUTUMN");
System.out.println("autumn1 = " + autumn1);
System.out.println(autumn == autumn1);

注意这里的 autumn1 和 上文 name() 方法代码中的 autumn 是同一个对象。
在这里插入图片描述
错误情况示例:(枚举类Season2中没有"WW")

System.out.println("autumn0 = " + Season2.valueOf("WW"));

在这里插入图片描述

5、compareTo()

作用:比较两个枚举常量,比较的就是编号(ordinal那个方法)
源码:return self.ordinal - other.ordinal;
在这里插入图片描述

System.out.println("============== 5 compareTo()使用 ===========");
System.out.println(Season2.AUTUMN.compareTo(Season2.AUTUMN));
System.out.println(Season2.AUTUMN.compareTo(Season2.SPRING));

在这里插入图片描述

6、toString()

作用:Enum类已经重写过了,返回的是当前对象名,子类可以重写该方法,用于返回对象的属性信息

System.out.println("============== 6 toString()使用 ===========");
System.out.println(autumn.toString());

在前文的准备工作中,已经在Season2枚举类中重写了方法,所以输出如下:
在这里插入图片描述
如果没重写,输出为:
在这里插入图片描述
这是因为Season2继承了Enum,Enum类重写的方法如下:
在这里插入图片描述

本笔记是对韩顺平老师的Java课程做出的梳理。方便本人和观看者进行复习。
课程请见: https://www.bilibili.com/video/BV1fh411y7R8/?spm_id_from=333.999.0.0&vd_source=ceab44fb5c1365a19cb488ab650bab03

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

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

相关文章

富必达API:一站式无代码开发集成电商平台、CRM和营销系统

一站式无代码开发的连接解决方案 电子商务、客户服务系统以及其它商业应用,是现代企业运营的重要部分。然而,将这些系统进行有效的整合往往需要复杂的API开发,这对很多企业来说是一个巨大的挑战。富必达API以其一站式的无代码开发解决方案&a…

一键上传,无限容量!打造高效图床工具,利用Electron和Gitee搭建自己的私人云存储空间

说在前面 平时写文章或写代码的时候,都少不了需要将本地图片转成在线图片链接,大家都是使用什么工具进行转换的呢?相信很多人都有自己的图床工具,今天来给大家介绍一下,怎么基于Gitee和Electron来开发一个便捷的图床工…

Docker本地部署Firefox火狐浏览器并远程访问

🔥博客主页: 小羊失眠啦. 🎥系列专栏:《C语言》 《数据结构》 《Linux》《Cpolar》 ❤️感谢大家点赞👍收藏⭐评论✍️ 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,…

上市公司数字化转型及同群效应数据集合(四种测算方法)

数据简介:当今世界处于高速发展的信息时代中,数字革命的产生催生出大量数字技术和数字信息。在数字经济时代,数字化转型赋予了企业新的发展动能,数字化转型已经成为诸多企业高质量发展的重要路径。是否需要进行数字化转型、能否及…

windows启动后直接进入指定程序并且不显示欢迎界面和windows桌面

windows启动后直接进入指定程序并且不显示欢迎界面和windows桌面 前言开机进入指定程序方法问题 浅尝GINA和Credential Providers关闭欢迎屏幕 前言 由于系统需求需要做到电脑开机后显示完windows加载页面就直接进入自己系统的界面,并且不显示登录欢迎页面&#xf…

IDE1007:当前上下文中不存在名称“xxx“

这种在Halcon中直接导出的代码不能直接放程序中,应该在控件中比如一个按钮中,就不会出错了。

Docker安装可视化工具Portainer

目录 Portainer简介 Portainer安装 Portainer简介 Portainer是一款开源的容器管理平台,支持多种容器技术,如Docker、Kubernetes和Swarm等。它提供了一个易于使用的Web UI界面,可用于管理和监控容器和集群。Portainer旨在使容器管理更加简单…

【celery踩坑】celery定时和周期任务全部不执行

一、背景 有一天,突然发现线上系统上的任务没有执行,状态一直是未完成。 看了一下celery的beat日志,发现周期任务和定时任务都不执行了。 重启项目,发现django_celery_beat_periodictask中,也只是执行前面几个周期或者…

C语言之“可变参数<stdarg.h>”

目录 前言 stdarg.h头文件 实例:遍历并求和所有传递给sum函数的额外实际参数 前言 有时我们会希望函数带有可变数量的参数就像printf(cosnt char* format ...)和scanf(cosnt char* format ...)那样除了有一个参数 …

【用unity实现100个游戏之17】从零开始制作一个类幸存者肉鸽(Roguelike)游戏6(附项目源码)

文章目录 本节最终效果前言开始游戏主角扣血和死亡游戏结束清屏效果赢得比赛角色选择界面每个角色有自己的特点,及初始属性不一样参考源码完结 本节最终效果 前言 本节紧跟着上一篇,主要实现不同游戏界面和不同角色选择。 开始游戏 简单绘制UI 修改…

Vue中的组件和插件

一、组件 组件是Vue中最核心的概念之一,它可以把一个页面拆分成多个独立的、可复用的部分。组件通常包含了自己的模板、样式和逻辑,用于封装一个特定的功能或界面。Vue的组件有单文件组件和普通组件两种类型,可以通过Vue.component或Vue.ext…

基于javaweb的宠物服务商城系统设计与开发

摘 要 最近几年以来,宠物在人们的日常生活中所占的地位越来越重要了,它们不仅仅是我们的朋友,也成为了我们家庭中的一份子。21世纪,信息技术飞速发展,计算机行业日新月异,极大地带动了信息的流动&#xff…

DS1302时钟保持芯片,让你很快读懂它

概述: DS1302是DALLAS公司制作的涓流充电时钟芯片。芯片有实时时钟日历功能,有31*8bits静态RAM,可以通过串行接口方式和处理器(stm32,ARM等)进行通信来读写RAM,有两种传送方式,单字节传送和多字节传送。内部…

OSG编程指南<十六>:OSG渲染到纹理RTT及三维纹理体渲染技术简介

1、渲染到纹理(RTT) 1.1 RTT介绍 RTT(Render to Texture)即渲染到纹理。在普通的图形渲染流程中,最终结果是渲染到帧缓存中,然后才会显示到屏幕上。而RTT则是将场景渲染到一张纹理上,并且在之后…

三.排序与分页

目录 一.排序数据二.分页 一.排序数据 1.排序规则 使用ORDER BY 子句排序 ASC(ascend)升序DESC(descend)降序 ORDER BY 子句在SELECT语句的结尾 2.单列排序 SELECT last_name, job_id, department_id, hire_date FROM e…

.net core 连接数据库,通过数据库生成Modell

1、安装EF Core Power Tools:打开Vs开发工具→扩展→管理扩展 2、(切记执行这步之前确保自己的代码不存在编写或者编译错误!)安装完成后在你需要创建数据库实体的项目文件夹上面单击右键,找到EF Core 工具(必须安装扩展之和才会有…

Git修改远程仓库名称

1、先直接在远程点仓库名,然后左侧菜单栏找settings-general,然后直接修改工程名,保存即可。 2、还是在settings-general下,下拉找到Advanced点击Expand展开,然后下拉到最底部 在Change path里填入新的项目名称&#x…

C语言猜素数(ZZULIOJ1292:猜素数)

题目描述 Lx给Xp出了一道难题,随便在0和1000000之间抽出两个数,估计在这两个数之间的素数的个数,如果猜测的结果和正确结果一样,Xp就可以得到Lx的一件礼物,你能猜对吗?编程实现一下吧! 输入&…

App测试中iOS和Android的差异

1、系统版本: iOS和Android系统版本的更新速度、使用人数比例以及功能的不同都可能导致应用程序在不同操作系统版本上的表现和兼容性存在区别。 例如,在iOS平台上,很多用户会更快地升级到最新版本的iOS系统,而在Android平台上&a…

Spring-事务支持

目录 一、事务概述 二、引入事务场景 三、Spring对事务的支持 Spring实现事务的两种方式 声明式事务之注解实现方式 1.在Spring配置文件中配置事务管理器 2. 在Spring配置文件引入tx命名空间 3. 在Spring配置文件中配置“事务注解驱动器”,通过注解的方式控…