GOGOGO 枚举

含义:一种类似于类的一种结构

作用:是Java提供的一个数据类型,可以设置值是固定的
【当某一个数据类型受自身限制的时候,使用枚举】

语法格式:

public enum 枚举名{……
}

有哪些成员?

A、对象

public enum EnumDemo {/*** 对象** 对象是直接在枚举类中* 全大写默认是对象* 底层语法格式默认 public static final 枚举名 对象名 = new 枚举名();* 默认调用的无参构造* 定义多个对象时以逗号隔开分号结尾 对象1,对象2,对象3,对象4……;*/UPPER;
}

如何调用对象

public class EnumDemoTest {public static void main(String[] args) {//直接打印输出  【枚举名.对象名】   默认打印结果是对象名System.out.println(EnumDemo.UPPER);//UPPER}
}

注意:这里打印的对象不是地址,默认打印对象名,因为其实它默认重写了toString方法,手动重写会打印对象构造方法中的值

B、字段【非静态和静态】

	前提:从上自下,先有对象,再有字段;有字段无对象会编译错误
public enum EnumDemo {/*** 字段** 1.数据类型  字段名;** 2.static 数据类型 字段名;*/UPPER;String centre;static String centre1;
}

如何调用字段

public class EnumDemoTest {public static void main(String[] args) {//调用非静态字段【枚举名.对象名.非静态字段名】EnumDemo.UPPER.centre = "aa";System.out.println(EnumDemo.UPPER.centre);//aa//调用静态字段【枚举名.静态字段名】EnumDemo.centre1 = "AA";System.out.println(EnumDemo.centre1);//AA}
}

C、构造方法

 	默认都是 私有的
public enum EnumDemo {/*** 构造方法** 1.无参构造** 2.有参构造【直接此枚举对象中 对象名("字段类型值")】** 对象默认使用无参** 当有了有参构造,也必须要有无参构造**/UPPER,UPPER1("!"),UPPER2("!",100);String centre;static String centre1;//默认构造方法被private修饰,也只能用它来修饰EnumDemo(){System.out.println("无参构造!");}EnumDemo(String name){System.out.println("有参构造"+name);}EnumDemo(String name,int morey){System.out.println("有参构造"+name+"--"+morey);}}

如何调用构造方法

public class EnumDemoTest {public static void main(String[] args) {//调用无参构造EnumDemo upper = EnumDemo.UPPER;//就是这样就会打印:无参构造!//调用有参构造(形参列表个数1)EnumDemo upper1 = EnumDemo.UPPER;//就是这样就会打印:有参构造!//调用有参构造(形参列表个数2……)EnumDemo upper2 = EnumDemo.UPPER;//就是这样就会打印:有参构造!--100}
}

由此可以看出,每个对象都能共享枚举里面的其它成员

这里重写toString方法呢?

public enum EnumDemo {/*** 构造方法** 1.无参构造** 2.有参构造【直接此枚举对象中 对象名("字段类型值")】** 对象默认使用无参** 当有了有参构造,也必须要有无参构造**/UPPER,UPPER1("!"),UPPER2("!",100);String name;int morey;static String centre1;//默认构造方法被private修饰,也只能用它来修饰EnumDemo(){System.out.println("无参构造!");}EnumDemo(String name){System.out.println("有参构造"+name);}EnumDemo(String name,int morey){//给set/get方法、toString方法this.name = name;this.morey = morey;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getMorey() {return morey;}public void setMorey(int morey) {this.morey = morey;}public static String getCentre1() {return centre1;}public static void setCentre1(String centre1) {EnumDemo.centre1 = centre1;}@Overridepublic String toString() {return "EnumDemo{" +"name='" + name + '\'' +", morey=" + morey +'}';}
}
/*** 调用 UPPER2对象 有参构造*/
public class EnumDemoTest {public static void main(String[] args) {//调用无参构造EnumDemo upper = EnumDemo.UPPER;//就是这样就会打印:无参构造!//调用有参构造(形参列表个数1)EnumDemo upper1 = EnumDemo.UPPER;//就是这样就会打印:有参构造!//调用有参构造(形参列表个数2……)EnumDemo upper2 = EnumDemo.UPPER2;System.out.println(upper2);//EnumDemo{name='!', morey=100}}
}

D、方法

public enum EnumDemo {/*** 方法** 1.非静态方法** 2.静态方法*/UPPER;void method1(){System.out.println("非静态方法!");}static void method2(){System.out.println("静态方法!");}
}

如何调用方法

public class EnumDemoTest {public static void main(String[] args) {//调用非静态方法【对象名.对象名.非静态方法】EnumDemo.UPPER.method1();//非静态方法!//调用静态方法【枚举名.静态方法名】EnumDemo.method2();//静态方法!}
}

枚举的继承

(Enum)是所有枚举类的基类,都隐式继承了Enum,只能隐式继承,不能显示继承

在这里插入图片描述

为何打印对象的时候不是直接打印的地址而是打印的对象名?

java.lang.Object		【所有类的基类,toString方法】└ java.lang.Enum<E>	【所有枚举类的基类】【因为Enum继承了Object类,重写了toString方法】└ 自定义的枚举类		【所以打印对象是其对象名,而不是地址】

使用场景

一般使用在值比较固定的地方,常和switch一起使用

在这里插入图片描述

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

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

相关文章

AWTK 骨骼动画控件发布

Spine 是一款广泛使用的 2D 骨骼动画工具&#xff0c;专为游戏开发和动态图形设计设计。它通过基于骨骼的动画系统&#xff0c;帮助开发者创建流畅、高效的角色动画。本项目是基于 Spine 实现的 AWTK 骨骼动画控件。 代码&#xff1a;https://gitee.com/zlgopen/awtk-widget-s…

[免费]基于Python的Django博客系统【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的基于Python的Django博客系统&#xff0c;分享下哈。 项目视频演示 【免费】基于Python的Django博客系统 Python毕业设计_哔哩哔哩_bilibili 项目介绍 随着互联网技术的飞速发展&#xff0c;信息的传播与…

如何将电脑桌面默认的C盘设置到D盘?详细操作步骤!

将电脑桌面默认的C盘设置到D盘的详细操作步骤&#xff01; 本博文介绍如何将电脑桌面&#xff08;默认为C盘&#xff09;设置在D盘下。 首先&#xff0c;在D盘建立文件夹Desktop&#xff0c;完整的路径为D:\Desktop。winR&#xff0c;输入Regedit命令。&#xff08;或者单击【…

C++ 写一个简单的加减法计算器

************* C topic&#xff1a;结构 ************* Structure is a very intersting issue. I really dont like concepts as it is boring. I would like to cases instead. If I want to learn something, donot hesitate to make shits. Like building a house. Wh…

excel如何查找一个表的数据在另外一个表是否存在

比如“Sheet1”有“张三”、“李四”“王五”三个人的数据&#xff0c;“Sheet2”只有“张三”、“李四”的数据。我们通过修改“Sheet1”的“民族”或者其他空的列&#xff0c;修改为“Sheet2”的某一列。这样修改后筛选这个修改的列为空的或者为出错的&#xff0c;就能找到两…

CVE-2023-38831 漏洞复现:win10 压缩包挂马攻击剖析

目录 前言 漏洞介绍 漏洞原理 产生条件 影响范围 防御措施 复现步骤 环境准备 具体操作 前言 在网络安全这片没有硝烟的战场上&#xff0c;新型漏洞如同隐匿的暗箭&#xff0c;时刻威胁着我们的数字生活。其中&#xff0c;CVE - 2023 - 38831 这个关联 Win10 压缩包挂…

论文阅读(二):理解概率图模型的两个要点:关于推理和学习的知识

1.论文链接&#xff1a;Essentials to Understand Probabilistic Graphical Models: A Tutorial about Inference and Learning 摘要&#xff1a; 本章的目的是为没有概率图形模型背景或没有深入背景的科学家提供一个高级教程。对于更熟悉这些模型的读者&#xff0c;本章将作为…

记录 | 基于Docker Desktop的MaxKB安装

目录 前言一、MaxKBStep 1Step2 二、运行MaxKB更新时间 前言 参考文章&#xff1a;如何利用智谱全模态免费模型&#xff0c;生成大家都喜欢的图、文、视并茂的文章&#xff01; MaxKB的Github下载地址 参考视频&#xff1a;【2025最新MaxKB教程】10分钟学会一键部署本地私人专属…

第26篇 基于ARM A9处理器用C语言实现中断<二>

Q&#xff1a;基于ARM A9处理器怎样编写C语言工程&#xff0c;使用按键中断将数字显示在七段数码管上呢&#xff1f; A&#xff1a;基本原理&#xff1a;主程序需要首先调用子程序set_A9_IRQ_stack()初始化IRQ模式的ARM A9堆栈指针&#xff1b;然后主程序调用子程序config_GIC…

基于GS(Gaussian Splatting)的机器人Sim2Real2Sim仿真平台

项目地址&#xff1a;RoboGSim 背景简介 已有的数据采集方法中&#xff0c;遥操作&#xff08;下左&#xff09;是数据质量高&#xff0c;但采集成本高、效率低下&#xff1b;传统仿真流程成本低&#xff08;下右&#xff09;&#xff0c;但真实度&#xff08;如纹理、物理&…

MongoDB部署模式

目录 单节点模式&#xff08;Standalone&#xff09; 副本集模式&#xff08;Replica Set&#xff09; 分片集群模式&#xff08;Sharded Cluster&#xff09; MongoDB有多种部署模式&#xff0c;可以根据业务需求选择适合的架构和部署方式。 单节点模式&#xff08;Standa…

微服务搭建----springboot接入Nacos2.x

springboot接入Nacos2.x nacos之前用的版本是1.0的&#xff0c;现在重新搭建一个2.0版本的&#xff0c;学如逆水行舟&#xff0c;不进则退&#xff0c;废话不多说&#xff0c;开搞 1、 nacos2.x搭建 1&#xff0c;首先第一步查询下项目之间的版本对照&#xff0c;不然后期会…

npm启动前端项目时报错(vue) error:0308010C:digital envelope routines::unsupported

vue 启动项目时&#xff0c;npm run serve 报下面的错&#xff1a; error:0308010C:digital envelope routines::unsupported at new Hash (node:internal/crypto/hash:67:19) at Object.createHash (node:crypto:133:10) at FSReqCallback.readFileAfterClose [as on…

Redis实战(黑马点评)——关于缓存(缓存更新策略、缓存穿透、缓存雪崩、缓存击穿、Redis工具)

redis实现查询缓存的业务逻辑 service层实现 Overridepublic Result queryById(Long id) {String key CACHE_SHOP_KEY id;// 现查询redis内有没有数据String shopJson (String) redisTemplate.opsForValue().get(key);if(StrUtil.isNotBlank(shopJson)){ // 如果redis的数…

算法-加油站问题

hello 大家好&#xff01;今天开写一个新章节&#xff0c;每一天一道算法题。让我们一起来学习算法思维吧&#xff01; function canCompleteCircuit(gas, cost) {// 加油站的总数const n gas.length;// 记录总剩余油量&#xff0c;若总剩余油量小于 0&#xff0c;说明无法绕环…

【机器学习】深入探索SVM:支持向量机的原理与应用

目录 &#x1f354; SVM引入 1.1什么是SVM? 1.2支持向量机分类 1.3 线性可分、线性和非线性的区分 &#x1f354; 小结 学习目标 知道SVM的概念 &#x1f354; SVM引入 1.1什么是SVM? 看一个故事&#xff0c;故事是这样子的&#xff1a; 在很久以前的情人节&#xf…

pycharm 运行远程环境问题 Error:Failed to prepare environment.

问题排查 拿到更详细的报错信息&#xff1a; Help > Diagnostic Tools > Debug Log Settings section: 添加下面的配置 com.intellij.execution.configurations.GeneralCommandLine 重显报错&#xff0c;我这里是再次运行代码打开 Help | Collect Logs and Diagnosti…

一组开源、免费、Metro风格的 WPF UI 控件库

前言 今天大姚给大家分享一个开源、免费、Metro风格的 WPF UI 控件库&#xff1a;MahApps.Metro。 项目介绍 MahApps.Metro 是一个开源、免费、Metro风格的 WPF UI 控件库&#xff0c;提供了现代化、平滑和美观的控件和样式&#xff0c;帮助开发人员轻松创建具有现代感的 Win…

读写和解析简单的 nc 文件

NetCDF 文件格式在气象数据工程领域占据着举足轻重的地位&#xff0c;其结构灵活、强兼容性等优势使其成为该领域的一个标准。无论是从事学术研究还是工程实践&#xff0c;掌握这种数据格式变得越发重要。其次&#xff0c;我注意到目前社区中气象编程大多数课程都聚焦于某个特定…

Mac m1,m2,m3芯片使用nvm安装node14报错

使用nvm安装了node 12/16/18都没有问题&#xff0c;到14就报错了。第一次看到这个报错有点懵&#xff0c;查询资料发现是Mac芯片的问题。 Issue上提供了两个方案&#xff1a; 1、为了在arm64的Mac上安装node 14&#xff0c;需要使用Rosseta&#xff0c;可以通过以下命令安装 …