常用类型_枚举..

1.自定义类实现枚举效果

现在有这么一个需求:
如果想要表示固定数量的固定值的话 用什么类型比较好 如果从已知的类型来看 仿佛什么类型也不太合适 比如用int类型标识的话 不符合我固定数量的固定值的要求
我们假设用一个类去实现这个需求:
在这个类中提供一个私有的构造方法 防止外界随随便便根据这个类创建任意数量的对象 在提供几个公有的常量(几个体现了固定数量这个字眼 常量则体现了固定值这个字眼)
实现如下所示

public class Season{private Season(){}public static final Season SPRING = new Season();public static final Season SUMMER = new Season();public static final Season FALL = new Season();public static final Season WINTER = new Season();
}
public class Main {public static void main(String[] args) {// 然后根据不同的枚举值做出不同的操作// 1.首先通过if-else语句实现这个需求Season s = Season.SPRING;if(s == Season.SPRING){System.out.println("春天");}else if(s == Season.SUMMER){System.out.println("夏天");}else if(s == Season.FALL){System.out.println("秋天");}else if(s == Season.WINTER){System.out.println("冬天");}// 2.如果想要通过switch语句实现判断 显然是不可取的 因为switch语句的()只能储存整型、字符串类型以及枚举类型 这个属于引用类型 因此不能通过switch实现这个判断效果}
}

2.枚举类型

如果只是要求取值为固定数量的固定值的话 那么可以使用枚举类型
枚举就是由固定数量的固定值所组成的

public enum Season{SPRING, SUMMER, FALL, WINTER
}
public class Main {public static void main(String[] args) {// 然后根据不同的枚举值做出不同的操作// 1.首先通过if-else语句实现这个需求
//        Season s = Season.SPRING;
//        if(s == Season.SPRING){
//            System.out.println("春天");
//        }else if(s == Season.SUMMER){
//            System.out.println("夏天");
//        }else if(s == Season.FALL){
//            System.out.println("秋天");
//        }else if(s == Season.WINTER) {
//            System.out.println("冬天");
//        }// 2.然后可以通过switch语句实现这个需求Season s = Season.SPRING;switch(s){case SPRING:System.out.println("春天");break;case SUMMER:System.out.println("夏天");break;case FALL:System.out.println("秋天");break;case WINTER:System.out.println("冬天");}System.out.println(s.ordinal());// 你可以打印这个常量值在枚举中的索引System.out.println(s.name());// 你也可以打印这个常量值在枚举中的名称}
}

上述代码中值得注意的是:如果我们要通过switch语句对枚举类型中定义的常量进行判断的话 那么我们可以省略case语句中的枚举名称

1.枚举的使用注意

枚举的本质是类 所有枚举类型都隐式的继承自java.lang.Enum

枚举定义完常量以后 可以继续定义成员变量、方法(但是注意最后一个常量定义完之后需要以分号结尾)

枚举的方法权限必须是无修饰符或者private(其实无修饰符的效果和private的效果一样)
Java会主动调用构造方法来初始化每一个常量 你不能手动调用构造方法(如果Java允许你手动调用构造方法的话 那么就会破坏枚举由固定数量组成的规定 因为你因此可以定义任意数量的固定值)

2.自定义构造方法的枚举

public enum Season{SPRING(5, 15), SUMMER(25, 35), FALL(15, 25), WINTER(-5, 5);// 这边就很明显可以看出常量是通过主动调用构造方法来定义的private int min;// 用于表示季节的最低温度private int max;// 用于表示季节的最高温度Season(int min, int max){this.min = min;this.max = max;}public int getMax(){return max;}public int getMin(){return min;}
}
public class Main {public static void main(String[] args) {Season s = Season.SPRING;System.out.println(s.getMax());System.out.println(s.getMin());}
}

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

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

相关文章

NVIDIA GeForce RTX 3090 GPU系列

NVIDIA GeForce RTX™ 3090 Ti 和 3090 采用第 2 代 NVIDIA RTX 架构 – NVIDIA Ampere 架构。该系列产品搭载专用的第 2 代 RT Core ,第 3代 Tensor Core、全新的 SM 多单元流处理器以及令人惊叹的 24GB G6X 显存,所有特性都旨在全力为游戏玩家和创作者…

【2024系统架构设计】 系统架构设计师第二版-信息系统架构设计理论与实践

目录 一 信息系统架构概念 二 信息系统架构 三 信息系统架构设计方法 四 信息系统架构案例

MySQL 临时表

MySQL 临时表 MySQL 临时表在我们需要保存一些临时数据时是非常有用的。 临时表只在当前连接可见,当关闭连接时,MySQL 会自动删除表并释放所有空间。 在 MySQL 中,临时表是一种在当前会话中存在的表,它在会话结束时会自动被销毁…

【教学类-09-04】20240102《游戏棋N*N》数字填写,制作棋子和骰子

作品展示 背景需求: 最近在清理学具材料库,找到一套1年多前的《N*N游戏棋》,把没有用完的棋盘拿出来,,想给大4班换花样,并把它们用掉。 程序代码在这里 【教学类-09-03】20221120《游戏棋10*10数字如何直接…

深度学习目标检测模型常用于部署在边缘计算设备上,常用于部署的边缘计算设备有哪些。

问题描述:深度学习目标检测模型常用于部署在边缘计算设备上,常用于部署的边缘计算设备有哪些。 问题解答: 在边缘计算设备上部署深度学习目标检测模型通常需要考虑设备的计算能力、内存、功耗等因素。以下是一些常用于部署深度学习目标检测模…

一篇五分生信临床模型预测文章代码复现——Figure 10.机制及肿瘤免疫浸润(九)——Estimate——倒数第二节

之前讲过临床模型预测的专栏,但那只是基础版本,下面我们以自噬相关基因为例子,模仿一篇五分文章,将图和代码复现出来,学会本专栏课程,可以具备发一篇五分左右文章的水平: 本专栏目录如下: Figure 1:差异表达基因及预后基因筛选(图片仅供参考) Figure 2. 生存分析,…

马目标检测数据集VOC格式500张

马,一种优雅而强健的哺乳动物,以其独特的形态和特点而闻名于世。 马的体型高大,四肢修长,有着强健的肌肉和结实的骨骼。马头一般较长,眼睛炯炯有神,耳朵直立,鼻子和嘴巴都较大。毛发根据品种不…

C++ 双链表数组模拟 || 删除和插入节点 ||双链表模版题

实现一个双链表,双链表初始为空,支持 5 种操作: 在最左侧插入一个数; 在最右侧插入一个数; 将第 k 个插入的数删除; 在第 k 个插入的数左侧插入一个数; 在第 k 个插入的数右侧插入一个数 现在要…

黑马程序员SSM框架-Maven进阶

视频链接:Maven-01-分模块开发的意义_哔哩哔哩_bilibili 分模块开发与设计 分模块开发意义 分模块开发 依赖管理 依赖传递 依赖传递冲突问题 可以点击红框按钮查看依赖情况。 可选依赖和排除依赖 继承和聚合 聚合 聚合工程开发 继承 聚合和继承的区别 属性 属性…

大模型在现代应用中的多元实例

目录 前言1 GPT-3、GPT-3.5、GPT-4:自然语言处理的新纪元1.1 GPT-3与传统NLP方法的区别1.2 GPT-3.5 和 GPT-4 的进展1.3 技术背后的革新 2 自然语言转换为Python代码2.1 简介2.2 技术原理2.3 应用和优势 3 DALL-E 2(5B)图像生成3.1 简介3.2 技…

【Bootstrap学习 day11】

Bootstrap5字体图标 字体图标是在Web项目中使用的图标字体。 使用字体图标的好处是,可以通过应用CSS color属性来创建任何颜色的图标。此外,要更改图标的大小,只需使用CSS font-size属性即可。 获取字体图标 在网页中包含Bootstrap5图标的最…

深入了解Apache 日志,Apache 日志分析工具

Apache Web 服务器在企业中广泛用于托管其网站和 Web 应用程序,Apache 服务器生成的原始日志提供有关 Apache 服务器托管的网站如何处理用户请求以及访问您的网站时经常遇到的错误的重要信息。 什么是 Apache 日志 Apache 日志包含 Apache Web 服务器处理的所有事…

tyxsspa/AnyText 阿里生成文字

Dockerfile ################ # 使用 NVIDIA CUDA 11.8 开发环境作为基础镜像 FROM nvcr.io/nvidia/cuda:12.1.1-cudnn8-runtime-ubuntu22.04 # 设置非交互式安装模式以避免某些命令在构建过程中暂停 ENV DEBIAN_FRONTENDnoninteractive # 更新软件包列表并安装基本工具 RUN…

B+树索引及其原理

MySQL索引的底层结构是B树,为什么它会选择这个结构?联合索引是怎么实现的?最左侧匹配原则的原理是什么?本文将一一解答这些疑惑。 1 前置知识 在学习B树之前,我们先了解下其他的树形结构:二叉树、平衡二叉…

locust 快速入门--异常(Exceptions)与失败(Failures)

背景&#xff1a; 使用locust进行压测的时候&#xff0c;服务器响应已经异常了&#xff0c;但是从UI页面上看到的还是正常的响应。直至服务完全挂掉&#xff0c;才会出现异常信息。 locust认为HTTP响应代码是OK&#xff08;<400&#xff09;是成功的。实际服务的响应代码是2…

数据结构之堆——学习笔记

1.堆的简介&#xff1a; 接下来看一下堆的建立&#xff1b; 接下来是如何在堆中插入数据以及删除数据&#xff1a; 大根堆的插入操作类似只是改变了一下大于和小于符号&#xff0c;同时插入操作的时间复杂度为O&#xff08;logn&#xff09;。 来看几个问题&#xff1a; 答案当…

每日一题——LeetCode1051.高度检查器

方法一 sort排序&#xff1a; 创建一个元素和heights一模一样的expect数组 &#xff0c;将expect数组从小到大进行排序&#xff0c;比较heights和expect相同位置不同的元素个数 var heightChecker function(heights) {var expect [],count0for(const n of heights){expect.…

Ubuntu同步两个剪切板

众所周知&#xff0c;ubuntu系统中有两套剪切板。第一个剪切板是用鼠标操作&#xff0c;鼠标选中则复制&#xff0c;点击鼠标中键则粘贴&#xff08;这个剪切板通常叫做——选择缓冲区&#xff09;。第二个剪切板则是真正的剪切板&#xff0c;使用ctrlc&#xff08;在终端中默认…

qml的操作 -- VS2022开发qml,

在使用VS开发软件的时候一般大型软件都会使用模组的方式。每个模组之间独立开发&#xff0c;关于qml写的UI模组也不例外&#xff0c;如果所有的qml都挤在一个文件夹下也不利于管理&#xff0c;维护起来也比较吃力。比较好的管理方法就是按照功能分布存放在不同的文件夹下。还有…