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;就能找到两…

MySQL 基础学习(2): INSERT 操作

在这篇文章中&#xff0c;我们将专注于 MySQL 中的 INSERT 操作&#xff0c;深入了解如何高效地向表中插入数据&#xff0c;并探索插入操作中的一些常见错误与解决方案。 一、基础 INSERT 语法 在 MySQL 中&#xff0c;INSERT 操作用于向表中插入新记录&#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分钟学会一键部署本地私人专属…

Go反射指南

概念&#xff1a; 官方对此有个非常简明的介绍&#xff0c;两句话耐人寻味&#xff1a; 反射提供一种让程序检查自身结构的能力反射是困惑的源泉 第1条&#xff0c;再精确点的描述是“反射是一种检查interface变量的底层类型和值的机制”。 第2条&#xff0c;很有喜感的自嘲…

第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;如纹理、物理&…

「 机器人 」利用冲程对称性调节实现仿生飞行器姿态与方向控制

前言 在仿生扑翼飞行器中,通过改变冲程对称性这一技术手段,可以在上冲与下冲两个阶段引入不对称性,进而产生额外的力或力矩,用于实现俯仰或其他姿态方向的控制。以下从原理、在仿生飞行器中的应用和典型实验示例等方面进行梳理与阐述。 1. 冲程对称性原理 1.1 概念:上冲与…

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;不然后期会…

react-native网络调试工具Reactotron保姆级教程

在React Native开发过程中&#xff0c;调试和性能优化是至关重要的环节。今天&#xff0c;就来给大家分享一个非常强大的工具——Reactotron&#xff0c;它就像是一个贴心的助手&#xff0c;能帮助我们更轻松地追踪问题、优化性能。下面就是一份保姆级教程哦&#xff01; 一、…

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…

改进候鸟优化算法之三:引入自适应策略的候鸟优化算法(AS-MBO)

引入自适应策略的候鸟优化算法(Migrating Birds Optimization with Adaptive Strategy,简称AS-MBO)是对传统候鸟优化算法(Migrating Birds Optimization,MBO)的一种改进。MBO算法本身是一种基于群体智能的元启发式优化算法,其灵感来源于候鸟迁徙时的“V”字形飞行队列,…

02-机器学习-核心概念

以下是机器学习核心概念的详细梳理。 1. 机器学习三大范式 类型定义典型应用监督学习使用带标签的数据训练模型&#xff0c;预测未知数据的标签。分类&#xff08;邮件垃圾过滤&#xff09;、回归&#xff08;房价预测&#xff09;无监督学习从无标签的数据中发现隐藏模式或结…

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的数…