Java学习笔记26(枚举和注解)

1.枚举和注解

1.1 枚举

​ 1.枚举(enumeration)

​ 2.枚举是一组常量的集合

​ 3.枚举属于一种特殊的类,里面只包含一组有限的特定的对象

1.枚举应用案例

​ 1.不需要提供setXxx方法,因为枚举对象值通常为只读

​ 2.对枚举对象/属性使用final + static 共同修饰,实现底层优化

​ 3.枚举对象名通常使用全部大写,常量的命名规范

​ 4.枚举对象根据需要,也可以有多个属性

class Season{private String name;private String description;public String getName(){return name;}public String getDescription(){return description;}private Season(String name,String description){this.name = name;this.description = description;}public final static Seanson SPRING = new Seanson("春天""温暖");public final static Seanson SPRING = new Seanson("夏天""炎热");public final static Seanson SPRING = new Seanson("秋天""两双");public final static Seanson SPRING = new Seanson("冬天""寒冷");
}

​ *进行自定义类型实现枚举的特点

1.构造器私有化

2.本类内部创建一组对象

3.对外暴露对象(public final static)

4.通过get方法

2.enum关键字

enum Seanson2{//如果使用了enum来实现枚举类//1.使用关键字enum替代class//2.public static final Season SPRING = new Season("春天","温暖")直接使用//3.常量名(实参列表)//4.如果有多个常量(对象),使用逗号间隔即可//5.如果使用enum来实现枚举,要求将定义常量对象,写在前面SPRING("春天","温暖"),WINTER("冬天",""),AUTUMN("春天","温暖"),SUMMER("春天","温暖");private String name;private String desc;private Season(String name,String description){this.name = name;this.description = description;}
}

3.注意事项

​ 1.当使用enum关键字时,会默认隐式继承Enum类,是一个final类型

​ 2.传统的public static final Season SPRING = new Season(“春天”,“温暖”)直接简化为SPRING(“春天”,“温暖”)

​ 3.如果使用无参构造器创建枚举对象,则实参列表和小括号都可以省略,直接SUMMER;

​ 4.当有多个枚举对象时,使用逗号间隔

​ 5.枚举对象必须放在枚举类的首行

4.Enum类成员方法

在这里插入图片描述

​ *valueOf //将字符串转化成枚举对象,要求字符串必须为已有的常量名,否则报异常

​ 1.根据你输入的"AUTUMN"到Season2的枚举对象去查找

​ 2.如果找到了,就返回,如果没找到,就报错

Season2 autumn1 = Season2.valueOf("AUTUMN");
System.out.println("autumn1 =" + autumn1);

​ *toString //得到当前枚举常量的名称

​ *equals //没居中可以直接使用"=="来比较两个枚举常量是否相等

​ *hashCode //

​ *getDeclaringClass //得到枚举常量所属枚举类型的Class对象,用它来判断两个枚举常量是否属于同一个枚举类型

​ *name //得到当前枚举常量的名称,建议优先使用toString()

Season2 autumn = Season2.AUTUMN;
System.out.println(autumn.name());

​ *ordinal //得到当前枚举常量的次序

System.out.println(autumn.ordinal());	//输出autumn在枚举对象的排序位置

​ *compareTo //比较两个枚举常量的大小(按声明的顺序排列),就是比较编号

//1.就是把AUTUMN的编号与Season2.SUMMER的编号进行比较

//2.Season2.AUTUMN的编号 - Season2.SUMMER的编号

System.out.println(Season2.AUTUMN.compareTo(Season2.SUMMER));

​ *clone

​ *values //返回含有定义的所有枚举对象

Season2[] values = Season2.values();
for(Season2 season:values){//增强for循环System.out.println(season) 
}

5.使用细节

​ 1.使用enum关键字后,就不能有其它关键字(如extends)了,因为enum关键字会隐式继承Enum类,而Java是单继承机制

​ 2.enum实现的枚举类,仍然是一个类,还是可以实现接口

enum 类名 implements 接口1,接口2{}

1.2 注解

​ *注解(Annotation)也被称为元数据(Metadata),用于修饰解释包、类、方法、属性、构造器、局部变量等数据信息

​ *和注释一样,注解不影响程序逻辑,但注解可以被编译或运行,相当于嵌入在代码中的补充信息

1.基本介绍

​ *使用Annotation时要在其前面增加@符号,并把该Annotation当成一个修饰符使用,用于修饰它支持的程序元素

​ *三个基本的Annotation

1.@Override:限定某个方法,是表示重写父类的方法,该注解只能用于方法

2.@Deprecated:用于表示某个程序元素(类,方法等)已过时

3.@SuppressWarnings:抑制编译器警告

2.@Override说明

​ 1.@Override表示制定重写父类的方法,如果父类没有此方法,则会报错

​ 2.不过不写@Override注解,而父类仍有此方法,仍然构成重写

​ 3.@Override只能修饰方法,不能修饰其它类,包,属性等等

​ 4.@Target是修饰注解的注解,称为元注解

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

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

相关文章

C语言实现三子棋游戏(可以改变为四子棋或者多子棋版)

目录 游戏介绍 游戏框架 游戏基本逻辑的介绍 游戏具体功能实现 初始化棋盘 打印棋盘 玩家下棋 电脑下棋 判断输赢 行和列: 对角线: 平局: 游戏继续: 游戏完整代码 test.c game.c game.h 游戏介绍 三子棋游戏或者…

浏览器不兼容的问题和通用解决方案

大家好,我是咕噜铁蛋,今天我想和大家聊聊一个在我们日常上网过程中经常遇到的问题——浏览器不兼容。这个问题看似微小,但却常常让我们在浏览网页、使用在线应用时感到困扰。接下来,我将详细分析浏览器不兼容的原因,并…

Vue2 —— 学习(八)

目录 一、浏览器 webStorage (一)介绍 (二)LocalStorage 1.存储数据 2.查询/读取数据 3.移除数据 4.清空数据 (三)SessionStorage 二、TodoList 案例使用 storage 三、组件的自定义事件 …

[lesson48]同名覆盖引发的问题

同名覆盖引发的问题 父子间的赋值兼容 子类对象可以当做父类对象使用(兼容性) 子类对象可以直接赋值给父类对象(<font color>兼容性)子类对象可以直接初始化父类对象父类指针可以直接指向子类对象父类引用可以直接引用子类对象 当使用父类指针(引用)指向子类对象时 子类…

30 消息队列

原理 操作系统可以通过页表映射在共享区创建一块共享内存&#xff0c;也可以申请一个队列。A进程和B进程可以向这个队列发送数据块&#xff0c;两个进程接收数据块来通信 函数 申请数据块 参数中的key来自于ftok函数 删除消息队列 同样消息队列也有数据结构管理&#xff…

数值分析复习:Richardson外推和Romberg算法

文章目录 Richardson外推Romberg&#xff08;龙贝格&#xff09;算法 本篇文章适合个人复习翻阅&#xff0c;不建议新手入门使用 本专栏&#xff1a;数值分析复习 的前置知识主要有&#xff1a;数学分析、高等代数、泛函分析 本节继续考虑数值积分问题 Richardson外推 命题&a…

解决在linux中执行tailscale up却不弹出验证网址【Tailscale】【Linux】

文章目录 问题解决提醒 问题 最近有远程办公需求&#xff0c;需要连接内网服务器&#xff0c;又不太想用todesk&#xff0c;于是找到一个安全免费可用的Tailscale Best VPN Service for Secure Networks&#xff0c;在windows中顺利注册账号后&#xff0c;登陆了我的windows …

上位机图像处理和嵌入式模块部署(树莓派4b进行驱动的编写)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 树莓派4b上面还支持驱动代码的编写&#xff0c;这是我没有想到的。这里驱动&#xff0c;更多的是一种框架的编写&#xff0c;不一定是编写真正的驱…

Python3中的JSON介绍

JSON的本质是一个字符串&#xff0c;有一些特定的格式。用途是每一种语言都可以实现数据传输&#xff0c;比如不同的编程语言之间的传输。 序列化&#xff1a;Python数据类型 -> JSON格式字符串 import json info {1: 2,2: 3 }string json.dumps(info) print(type(string…

20240422,C++文件操作

停电一天之后&#xff0c;今天还有什么理由不学习呜呜……还是没怎么学习 一&#xff0c;文件操作 文件操作可以将数据持久化&#xff0c;对文件操作时须包含头文件<fstream> 两种文件类型&#xff1a;文本文件&#xff1a;文件以文本的ASCII码形式存储&#xff1b;二进…

【Vue3】$subscribe订阅与反应

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…

【深度学习总结_02】在自己的数据集微调SAM

【深度学习总结_02】在自己的数据集微调SAM 前言 SAM (Segment Anything Model)是Meta AI开发的一种分割模型。它被认为是计算机视觉的第一个基础模型。SAM是在包含数百万图像和数十亿mask的庞大数据语料库上进行训练的&#xff0c;这使得它非常强大。SAM能够为各种各样的图像…

代码随想录算法训练营第56天|583. 两个字符串的删除操作、72. 编辑距离

583. 两个字符串的删除操作 题目链接&#xff1a;两个字符串的删除操作 题目描述&#xff1a;给定两个单词 word1 和 word2 &#xff0c;返回使得 word1 和 word2 **相同所需的最小步数。 每步 可以删除任意一个字符串中的一个字符。 动态规划&#xff08;思路一&#xff09;&…

超越OpenAI,谷歌重磅发布从大模型蒸馏的编码器Gecko

引言&#xff1a;介绍文本嵌入模型的重要性和挑战 文本嵌入模型在自然语言处理&#xff08;NLP&#xff09;领域扮演着至关重要的角色。它们将文本转换为密集的向量表示&#xff0c;使得语义相似的文本在嵌入空间中彼此靠近。这些嵌入被广泛应用于各种下游任务&#xff0c;包括…

VideoComposer: Compositional Video Synthesis with Motion Controllability

decompose videos into three distinct types of conditions: textual conditions, spatial conditions, temperal conditions 条件的内容&#xff1a; a. textual condition: coarse grained visual content and motions, 使用openclip vit-H/14的text encoder b. spatial co…

Spring MVC的请求处理流程

Spring MVC的请求处理流程是一个精心设计的过程&#xff0c;旨在高效、灵活地处理Web请求并生成相应的响应。以下是该流程的详细解释&#xff1a; 用户发送请求&#xff1a; 用户通过浏览器或其他客户端发送HTTP请求到服务器。这个请求包含了请求的URL、请求方法&#xff08;如…

Splashtop 将在 NAB 展会上推出音视频剪辑增强功能

加利福尼亚州拉斯维加斯 Splashtop 在简化随处办公远程解决方案领域处于领先地位&#xff0c;在今年举行的 NAB 展会上将推出 Enterprise 解决方案的高级性能功能&#xff0c;均面向广播和媒体工作者而设计。 Splashtop Enterprise 经过优化&#xff0c;可为执行视频剪辑、唇…

Excel文件解析--超大Excel文件读写

使用POI写入 当我们想在Excel文件中写入100w条数据时&#xff0c;我们用普通的XSSFWorkbook对象写入时会发现&#xff0c;只有在将100w条数据全部加载入内存后才会用write()方法统一写入&#xff0c;这样效率很低&#xff0c;所以我们引入了SXSSFWorkbook进行超大Excel文件的读…

fixture固件和装饰器@pytest.mark.parametrize的参数化差异

fixture固件中有params参数可以进行参数化配置&#xff0c;装饰器pytest.mark.parametrize也可以为用例进行参数化配置&#xff0c;它们都是pytest框架中用于参数化测试的机制&#xff0c;但它们之间还是有很大差异的&#xff0c;该篇文章就来讲一讲这二者的区别使用&#xff1…

java开发之路——node.js安装

1. 安装node.js 最新Node.js安装详细教程及node.js配置 (1)默认的全局的安装路径和缓存路径 npm安装模块或库(可以统称为包)常用的两种命令形式&#xff1a; 本地安装(local)&#xff1a;npm install 名称全局安装(global)&#xff1a;npm install 名称 -g本地安装和全局安装…