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

JAVA补充知识01之枚举enum

目录

1. 枚举类的使用

1.1 枚举类的理解

1.2 举例

1.3 开发中的建议:

1.4 Enum中的常用方法

1.5 熟悉Enum类中常用的方法

1.6 枚举类实现接口的操作

1.7 jdk5.0之前定义枚举类的方式 (了解即可)

1.8 jdk5.0之后定义枚举类的方式 

1.8.1 jdk5.0前后的变化


1. 枚举类的使用

1.1 枚举类的理解

         枚举类型本质上也是一种类,只不过是这个类的对象是有限的、固定的几个,不能让用户随意创建。

1.2 举例

- `星期`:  Monday(星期一)......Sunday(星期天)
- `性别`:  Man(男)、Woman(女)
- `月份`:  January(1月)......December(12月)
- `季节`:  Spring(春节)......Winter(冬天)
- `三原色`:  red(红色)、green(绿色)、blue(蓝色)
- `支付方式`:  Cash(现金)、WeChatPay(微信)、Alipay(支付宝)、BankCard(银行卡)、CreditCard(信用卡)

- `就职状态`:  Busy(忙碌)、Free(空闲)、Vocation(休假)、Dimission(离职)
- `订单状态`:  Nonpayment(未付款)、Paid(已付款)、Fulfilled(已配货)、Delivered(已发货)、Checked(已确认收货)、Return(退货)、Exchange(换货)、Cancel(取消)
- `线程状态`:  创建、就绪、运行、阻塞、死亡

1.3 开发中的建议:

> 开发中,如果针对于某个类,其实例是确定个数的。则推荐将此类声明为枚举类

> 如果枚举类的实例只有一个,则可以看做是单例的实现方式。

  •  JDK5.0 之前如何自定义枚举类 (了解)--见代码1.7 jdk5.0之前定义枚举类的方式 (了解即可)
  •  JDK5.0中使用enum定义枚举类  -- 见代码 1.8 jdk5.0之后定义枚举类的方式 

1.4 Enum中的常用方法

  1.  使用enum关键字定义的枚举类,默认其父类是java.lang.Enum类
  2.  使用enum关键字定义的枚举类,不要再显示的定义其父类。否则报错。

1.5 熟悉Enum类中常用的方法

  1.     String toString(): 默认返回的是常量名(对象名),可以继续手动重写该方法!
  2.     (关注) static 枚举类型[ ] values():返回枚举类型的对象数组。该方法可以很方便地遍历所有的枚举值,是一个静态方法
  3.     (关注) static 枚举类型 valueOf(String name):可以把一个字符串转为对应的枚举类对象。要求字符串必须是枚举类对象的“名字”。如不是,会有运行时异常:IllegalArgumentException。
  4.     String name():得到当前枚举常量的名称。建议优先使用toString()。
  5.     int ordinal():返回当前枚举常量的次序号,默认从0开始

1.6 枚举类实现接口的操作

    情况1:枚举类实现接口,在枚举类中重写接口中的抽象方法。当通过不同的枚举类对象调用此方法时,执行的是同一个方法。  

   情况2:让枚举类的每一个对象重写接口中的抽象方法。当通过不同的枚举类对象调用此方法时,执行的是不同的实现的方法。

    //1. 必须在枚举类的开头声明多个对象。对象之间使用,隔开SPRING("春天","春暖花开"){public void show(){System.out.println("春天在哪里?");}},SUMMER("夏天","夏日炎炎"){public void show(){System.out.println("宁静的夏天");}},AUTUMN("秋天","秋高气爽"){public void show(){System.out.println("秋意浓");}},WINTER("冬天","白雪皑皑"){public void show(){System.out.println("大约在冬季");}};

1.7 jdk5.0之前定义枚举类的方式 (了解即可)

public class SeasonTest {public static void main(String[] args) {// Season.SPRING = null;System.out.println(Season.SPRING);System.out.println(Season.SUMMER.getSeasonName());System.out.println(Season.SUMMER.getSeasonDesc());}
}//jdk5.0之前定义枚举类的方式
class Season{//2. 声明当前类的对象的实例变量,使用private final修饰private final String seasonName;//季节的名称private final String seasonDesc;//季节的描述//1. 私有化类的构造器private Season(String seasonName,String seasonDesc){this.seasonName = seasonName;this.seasonDesc = seasonDesc;}//3. 提供实例变量的get方法public String getSeasonName() {return seasonName;}public String getSeasonDesc() {return seasonDesc;}//4. 创建当前类的实例,需要使用public static final修饰public static final Season SPRING = new Season("春天","春暖花开");public static final Season SUMMER = new Season("夏天","夏日炎炎");public static final Season AUTUMN = new Season("秋天","秋高气爽");public static final Season WINTER = new Season("冬天","白雪皑皑");@Overridepublic String toString() {return "Season{" +"seasonName='" + seasonName + '\'' +", seasonDesc='" + seasonDesc + '\'' +'}';}
}

1.8 jdk5.0之后定义枚举类的方式 

1.8.1 jdk5.0前后的变化

类似于接口Interface默认省略 public abstract  但枚举enum的对象必须省略 public static final 及 new 类名

    // JDK5.0 前 public static final Season SPRING = new Season("春天","春暖花开");public static final Season SUMMER = new Season("夏天","夏日炎炎");public static final Season AUTUMN = new Season("秋天","秋高气爽");public static final Season WINTER = new Season("冬天","白雪皑皑");// JDK5.0 后//1. 必须在枚举类的开头声明多个对象。对象之间使用,隔开SPRING("春天","春暖花开"),SUMMER("夏天","夏日炎炎"),AUTUMN("秋天","秋高气爽"),WINTER("冬天","白雪皑皑");

public class SeasonTest1 {public static void main(String[] args) {//      System.out.println(Season1.SPRING.getClass());//      System.out.println(Season1.SPRING.getClass().getSuperclass());//      System.out.println(Season1.SPRING.getClass().getSuperclass().getSuperclass());//测试方法//1. toString()System.out.println(Season1.SPRING);System.out.println(Season1.AUTUMN);//2. name()System.out.println(Season1.SPRING.name());//3. vlaues()Season1[] values = Season1.values();for (int i = 0; i < values.length; i++) {System.out.println(values[i]);}//4. valueOf(String objName):返回当前枚举类中名称为objName的枚举类对象。//如果枚举类中不存在objName名称的对象,则报错。String objName = "WINTER";
//        objName = "WINTER1";Season1 season1 = Season1.valueOf(objName);System.out.println(season1);//5.ordinal()System.out.println(Season1.AUTUMN.ordinal());//通过枚举类的对象调用重写接口中的方法Season1.SUMMER.show();}
}interface Info{void show();
}//jdk5.0中使用enum关键字定义枚举类
enum Season1 implements Info{//1. 必须在枚举类的开头声明多个对象。对象之间使用,隔开SPRING("春天","春暖花开"),SUMMER("夏天","夏日炎炎"),AUTUMN("秋天","秋高气爽"),WINTER("冬天","白雪皑皑");//2. 声明当前类的对象的实例变量,使用private final修饰private final String seasonName;//季节的名称private final String seasonDesc;//季节的描述//3. 私有化类的构造器private Season1(String seasonName,String seasonDesc){this.seasonName = seasonName;this.seasonDesc = seasonDesc;}//4. 提供实例变量的get方法public String getSeasonName() {return seasonName;}public String getSeasonDesc() {return seasonDesc;}@Overridepublic String toString() {return "Season1{" +"seasonName='" + seasonName + '\'' +", seasonDesc='" + seasonDesc + '\'' +'}';}@Overridepublic void show() {System.out.println("这是一个季节");}
}

相关文章:

JAVA补充知识01之枚举enum

目录 1. 枚举类的使用 1.1 枚举类的理解 1.2 举例 1.3 开发中的建议&#xff1a; 1.4 Enum中的常用方法 1.5 熟悉Enum类中常用的方法 1.6 枚举类实现接口的操作 1.7 jdk5.0之前定义枚举类的方式 &#xff08;了解即可&#xff09; 1.8 jdk5.0之后定义枚举类的方式 1…...

jenkins下配置maven

1. 先在jenkins服务器上安装maven 下载-解压-重命名-启动 [rootVM-0-12-centos local]# wget https://mirrors.aliyun.com/apache/maven/maven-3/3.9.0/binaries/apache-maven-3.9.0-bin.tar.gz [rootVM-0-12-centos local]# tar xf apache-maven-3.9.0-bin.tar.gz [rootVM-0…...

春季开学即将到来!大学生活必备数码清单奉上

马上就要开学了&#xff0c;你的返校装备是否已经准备齐全了呢&#xff1f;对于高校学生来说&#xff0c;很多数码产品都属于必备装备&#xff0c;比如下面这几款产品就受到了大量年轻消费者的喜爱&#xff0c;在它们的帮助下能够让大家的学习时光变得更快乐。1、不入耳黑科技骨…...

ubuntu18.04 天选2 R95900hx 3060显卡驱动安装

天选2 R95900hx 3060显卡驱动安装需求问题解决内核集显显卡驱动需求 外接显示器&#xff0c;安装nvidia驱动 问题 由于一开始直接在软件和更新中附加读懂安装了nvidia-470&#xff0c;导致系统黑屏。 解决 grub页面系统选择进入ubuntu recovery模式&#xff0c;选择root&a…...

Harbor安装部署实战详细手册

文章目录前言一、安装docker二、安装docker-compose1.下载2.赋权3.测试三、安装harbor1.下载2.解压3.修改配置文件4.部署5.配置开机自启动6.登录验证7.补充说明四、harbor使用问题1.docker login问题&#xff1a;Error response from daemon: Get https://: http: server gave …...

华为OD机试真题JAVA实现【箱子之形摆放】真题+解题思路+代码(20222023)

🔥系列专栏 华为OD机试(JAVA)真题目录汇总华为OD机试(Python)真题目录汇总华为OD机试(C++)真题目录汇总华为OD机试(JavaScript)真题目录汇总文章目录 🔥系列专栏题目输入输出描述示例一输入输出说明备注解题思路Code运行结果版权说明...

华为OD机试 - 事件推送(Python)| 真题+思路+考点+代码+岗位

事件推送 题目 同一个数轴 X 上有两个点的集合 A={A1, A2, …, Am} 和 B={B1, B2, …, Bn}, Ai 和 Bj 均为正整数,A、B 已经按照从小到大排好序,A、B 均不为空, 给定一个距离 R (正整数), 列出同时满足如下条件的所有(Ai, Bj)数对: Ai <= BjAi, Bj 之间的距离小于…...

【Linux】信号量

&#x1f387;Linux&#xff1a; 博客主页&#xff1a;一起去看日落吗分享博主的在Linux中学习到的知识和遇到的问题博主的能力有限&#xff0c;出现错误希望大家不吝赐教分享给大家一句我很喜欢的话&#xff1a; 看似不起波澜的日复一日&#xff0c;一定会在某一天让你看见坚持…...

android-java同步方法和异步方法

接口 Java接口是一系列方法的声明&#xff0c;是一些方法特征的集合&#xff0c;一个接口只有方法的特征没有方法的实现&#xff0c;因此这些方法可以在不同的地方被不同的类实现&#xff0c;而这些实现可以具有不同的行为&#xff08;功能&#xff09;。 两种含义&#xff1a…...

Flask入门(5):请求和响应

目录5.请求和响应5.1 请求5.2 响应5.请求和响应 5.1 请求 request对象封装解析了请求报文中的数据&#xff0c;其大部分功能是由依赖包werkzeug完成的&#xff0c;并且每个request对象都是线程隔离的&#xff0c;保证了数据的安全性。 request对象的属性 1.request.method …...

记进组后第五次组会汇报

2023年2月14日 日记一、小组组会二、实验室组会1、汇报内容&#xff08;1&#xff09;参考文献&#xff08;2&#xff09;CQF机制a.研究现状b.相关思考&#xff08;3&#xff09;研究计划2、汇报反馈一、小组组会 上午十点整&#xff0c;小组组会开始&#xff0c;有两个同学我…...

nil Foundation的Placeholder证明系统(2)

前序博客&#xff1a; nil Foundation的Placeholder证明系统&#xff08;1&#xff09; nil; Foundation团队2022年11月论文《Placeholder证明系统》。[2022年11月29日版本] 8. 优化 8.1 Batched FRI 不同于单独检查每个commitment&#xff0c;可对其进行FRI聚合。如对多项…...

QHash源码解读

QT版本 v5.12.10 元素 // 重点说明QHashData的函数&#xff0c;QHashData是QHash的基础 struct QHashData {struct Node {Node *next;uint h;};Node *fakeNext; // 永为nullNode **buckets; // Node *数组QtPrivate::RefCount ref;int size; // node个数int nodeSize; /…...

【Unity细节】RigidBody中Dynamic和Kinematic的区别

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 秩沅 原创 收录于专栏&#xff1a;unity细节和bug ⭐Dynamic和Kinematic的区别⭐ 文章目录⭐Dynamic和Kinematic的区别⭐&#x1f3…...

【C++、数据结构】哈希 — 闭散列与哈希桶的模拟实现

文章目录&#x1f4d6; 前言1. STL中哈希表的两个应用⚡1.1 &#x1f31f;unordered_set1.2 &#x1f31f;unordered_map2. 常见查找的性能对比&#x1f4a5;3. 哈希表模拟实现&#x1f3c1;3.1 哈希的概念&#xff1a;3.2 哈希函数&#xff1a;3.3 哈希冲突&#xff1a;3.4 闭…...

vue 开发环境 卸载node 版本 切换新的 node 版本 mac电脑

注意&#xff1a;操作的机器当前是mac&#xff0c;先卸载&#xff0c;再安装 1.查看现有 node 版本 node -v2.卸载现有 node 版本&#xff0c; 1.卸载从node官网下载pkg安装的node sudo rm -rf /usr/local/{bin/{node,npm},lib/node_modules/npm,lib/node,share/man/*/node…...

在Linux和Windows上安装Nacos-2.1.1

记录&#xff1a;377场景&#xff1a;在CentOS 7.9操作系统安装Nacos-2.1.1。在Windows操作系统上安装Nacos-2.1.1。Nacos&#xff1a;Nacos: Dynamic Naming and Configuration Service。Nacos提供动态配置服务、服务发现及管理、动态DNS服务功能。版本&#xff1a;JDK 1.8 Na…...

解决QML debugging is enabled.Only use this in a safe environment.警告

系列文章目录 文章目录系列文章目录前言一、警告原因二、解决办法参考前言 我试图运行一个非常简单的程序&#xff0c;当单击退出按钮时关闭窗口&#xff0c;但获取以下输出&#xff0c;前提是包含按钮的应用程序窗口不显示&#xff1a; 您已启用QML调试(实际上它默认启用)&…...

华为OD机试真题JAVA实现【N进制减法】真题+解题思路+代码(20222023)

🔥系列专栏 华为OD机试(JAVA)真题目录汇总华为OD机试(Python)真题目录汇总华为OD机试(C++)真题目录汇总华为OD机试(JavaScript)真题目录汇总文章目录 🔥系列专栏题目输入输出描述示例一输入输出说明解题思路Code代码运行结果版权说明<...

ACM第一周---周训---题目合集.

&#x1f680;write in front&#x1f680; &#x1f4dd;个人主页&#xff1a;认真写博客的夏目浅石.CSDN &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​ &#x1f4e3;系列专栏&#xff1a;ACM周训练题目合集.CSDN &#x1f4ac;总结&#xff1a…...

SDXL 1.0绘图工坊效果展示:多风格高清作品集,看看AI能画出多惊艳的图片

SDXL 1.0绘图工坊效果展示&#xff1a;多风格高清作品集&#xff0c;看看AI能画出多惊艳的图片 1. 开篇&#xff1a;当AI成为数字艺术家 想象一下&#xff0c;你只需要输入一段文字描述&#xff0c;就能在几秒钟内获得一张细节丰富、风格多样的高清图像——这不是科幻电影&am…...

Granite TimeSeries FlowState R1:从理论到代码,深入理解时间序列预测AI

Granite TimeSeries FlowState R1&#xff1a;从理论到代码&#xff0c;深入理解时间序列预测AI 最近几年&#xff0c;时间序列预测这个领域&#xff0c;因为AI的加入&#xff0c;变得有点不一样了。以前我们可能更依赖一些传统的统计模型&#xff0c;但现在&#xff0c;像RNN…...

如何高效解析HTML5动态表单:Gumbo-Parser完全指南

如何高效解析HTML5动态表单&#xff1a;Gumbo-Parser完全指南 【免费下载链接】gumbo-parser An HTML5 parsing library in pure C99 项目地址: https://gitcode.com/gh_mirrors/gum/gumbo-parser Gumbo-Parser是一款采用纯C99编写的HTML5解析库&#xff0c;它能够高效处…...

AudioLDM-S性能优化:MySQL数据库存储百万级音效元数据

AudioLDM-S性能优化&#xff1a;MySQL数据库存储百万级音效元数据 1. 引言 想象一下&#xff0c;你正在运营一个大型音效库平台&#xff0c;每天要处理数十万次的音效搜索请求。用户输入"雨声"或"城市夜晚"&#xff0c;系统需要在毫秒内从百万级别的音效…...

3步解锁全网资源:res-downloader实战手册

3步解锁全网资源&#xff1a;res-downloader实战手册 【免费下载链接】res-downloader 资源下载器、网络资源嗅探&#xff0c;支持微信视频号下载、网页抖音无水印下载、网页快手无水印视频下载、酷狗音乐下载等网络资源拦截下载! 项目地址: https://gitcode.com/GitHub_Tren…...

深入解析PyTorch中.pth文件的保存与加载机制

1. 揭开.pth文件的神秘面纱 第一次接触PyTorch时&#xff0c;看到那些以.pth结尾的文件&#xff0c;你是不是也和我当初一样充满疑惑&#xff1f;这些看似普通的文件&#xff0c;实际上是PyTorch模型持久化的关键。简单来说&#xff0c;.pth文件就像是给AI模型拍的一张"照…...

Clawdbot+Python爬虫实战:自动化数据采集与智能分析

ClawdbotPython爬虫实战&#xff1a;自动化数据采集与智能分析 1. 为什么数据采集需要Clawdbot这样的智能体 你有没有遇到过这样的场景&#xff1a;市场部同事凌晨三点发来消息&#xff0c;“老板急要竞品价格数据&#xff0c;明早九点前要出分析报告”。你打开浏览器&#x…...

FPGA时序优化全攻略:Vivado 2019.2中的建立与保持时间问题解决

FPGA时序优化全攻略&#xff1a;Vivado 2019.2中的建立与保持时间问题解决 在高速FPGA设计中&#xff0c;时序问题往往是工程师面临的最大挑战之一。当设计频率提升到200MHz甚至更高时&#xff0c;建立时间和保持时间的违例会频繁出现&#xff0c;导致设计无法正常工作。本文将…...

从PID控制器到语义分割:手把手教你复现PIDNet(附PyTorch代码与Cityscapes实战)

从PID控制器到语义分割&#xff1a;手把手教你复现PIDNet&#xff08;附PyTorch代码与Cityscapes实战&#xff09; 在计算机视觉领域&#xff0c;实时语义分割一直是个极具挑战性的任务。想象一下自动驾驶汽车需要在毫秒级时间内准确识别道路上的每个像素属于车辆、行人还是交通…...

GIL-Free Python并发仅剩最后1%难题:我们用37小时逆向分析PyO3内存模型,找到共享引用计数的终极解法

第一章&#xff1a;GIL-Free Python并发的终极挑战与破局意义Python 的全局解释器锁&#xff08;GIL&#xff09;长期被视为多核 CPU 利用率的“天花板”。它确保同一时刻仅有一个线程执行 Python 字节码&#xff0c;虽简化了内存管理与 C 扩展开发&#xff0c;却在 CPU 密集型…...