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是修饰注解的注解,称为元注解

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

web前端(简洁版)

0. 开发环境 && 安装插件 这里我使用的是vscode开发环境 Auto Rename Tag是语法自动补齐view-in-browser是快速在浏览器中打开live server实时网页刷新 1. HTML 文件基本结构 <html><head><title>第一个页面</title></head><body&g…

vuedevtools图标不亮不能使用,显示vue.js not detected

&#xff08;1&#xff09;不亮解决&#xff1a; 根本原因就是下载的vue开发者工具不对&#xff0c;没有编译。 直接来一个最彻底的解决办法&#xff1a; 下载我已经编译好的shellchrome 链接: https://pan.baidu.com/s/1zKEgGxT5uAvofpD-T1Oa_w?pwd72m5 提取码: 72m5 解…

王者荣耀防御塔如何开发!新手小白做游戏开发采坑经过。phaser前端游戏框架

好嘞&#xff0c;游戏开发框架是js 开发的网页小游戏&#xff01; phaser这个框架。好我们先上图&#xff01; 目前大概是这么一个样子。 然后防御塔功能呢。简单的说就是当人物进去的时候打他。人物扣血。 我们的小人物是这样的代码 遇到的问题如下&#xff1b; 小白刚开始…

【Spring Security系列】Spring Security整合JWT:构建安全的Web应用

前言 在企业级开发或者我们自己的课程设计中&#xff0c;确保用户数据的安全性和访问控制非常重要。而Spring Security和JWT是都两个强大的工具&#xff0c;它俩结合可以帮助我们实现这一目标。 Spring Security提供了全面的安全功能&#xff0c;而JWT则是一种用于身份验证的…

最新win11配置cuda以及cudnn补丁教程

1、首先使用指令 nvidia-smi 查看电脑支持的**最高cuda**版本&#xff0c;例如&#xff1a;本机 12.2 2、进入CUDA下载cuda安装包 https://developer.nvidia.com/cuda-toolkit-archive 2、点击上方绿色的链接&#xff0c;按照图中序号选择的即可&#xff0c;最后点击下载。 …

学习springcloud中Nacos笔记

一、springcloud版本对应 版本信息可以参考&#xff1a;版本说明 alibaba/spring-cloud-alibaba Wiki GitHub 这里说2022.x 分支对应springboot的版本信息&#xff1a; Spring Cloud Alibaba VersionSpring Cloud VersionSpring Boot Version 2022.0.0.0* Spring Cloud 202…

Unity3D 羊了个羊等游戏工程源码/3D资源 大合集

Unity3D休闲益智游戏工程源码大合集 一、关卡类游戏工程源码二、跑酷类游戏工程源码三、消除合成类游戏工程源码四、棋牌类游戏工程源码五、RPG(角色扮演)类游戏工程源码六、FPS&#xff08;射击&#xff09;类游戏工程源码十、Unity3D工艺仿真六、Unity游戏资源1、Unity3D 吃鸡…

软件杯 深度学习实现语义分割算法系统 - 机器视觉

文章目录 1 前言2 概念介绍2.1 什么是图像语义分割 3 条件随机场的深度学习模型3\. 1 多尺度特征融合 4 语义分割开发过程4.1 建立4.2 下载CamVid数据集4.3 加载CamVid图像4.4 加载CamVid像素标签图像 5 PyTorch 实现语义分割5.1 数据集准备5.2 训练基准模型5.3 损失函数5.4 归…

【C++】C++11 包装器

&#x1f440;樊梓慕&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》《算法》 &#x1f31d;每一个不曾起舞的日子&#xff0c;都是对生命的辜负 目录 前言 function包装器 fu…

# 从浅入深 学习 SpringCloud 微服务架构(二)模拟微服务环境(1)

从浅入深 学习 SpringCloud 微服务架构&#xff08;二&#xff09;模拟微服务环境&#xff08;1&#xff09; 段子手168 1、打开 idea 创建父工程 创建 artifactId 名为 spring_cloud_demo 的 maven 工程。 --> idea --> File --> New --> Project --> Ma…

【Hello算法】 > 第 3 关 >栈与队列

数据结构 之 数组与链表 1 栈 / 栈的常见操作、实现、应用2 队列 /队列的常见操作、实现、应用3 双向队列4 Tips ———————————————————————————————————————————————————————————- ————————————————…

MySQL基础篇总结

参考&#xff1a;黑马程序员MySQL基础视频链接 数据库基本操作 启动与停止 1.第一种方式&#xff1a; 1>以管理员身份运行cmd 2>在命令行窗口中输入: 启动:net start mysql80停止:net stop mysql80 2.第二种方式: 1>WinR快捷方式打开如下&#xff1a; 输入&#…

CompletableFuture编排异步线程

CompletableFuture 是 Java 8 引入的一种新的 Future&#xff0c;设计目的是为了编写非阻塞的异步代码。 传统异步编程方式 传统异步编程方式获得异步任务值&#xff0c;首先我们得通过future task &#xff0c;然后创建一个实现callable内部类&#xff0c;或者通过lambda的表…

Stable Diffusion教程:提示词(模型、插件、安装包可分享)

什么是提示词 文章提到的模型、插件、安装包都可分享&#xff0c;需要的小伙伴文末领取&#xff01; 你可能没写过提示词&#xff0c;但是一定听说过“提示词”这几个字&#xff0c;也大概能知道它的重要性。 没听说过也没关系&#xff0c;下面我就带你认识认识。 提示词就…

ARM_day6:实现字符串数据收发函数的封装

程序代码&#xff1a; uart4.h&#xff1a; #ifndef __UART4_H__ #define __UART4_H__ #include"stm32mp1xx_gpio.h" #include"stm32mp1xx_rcc.h" #include"stm32mp1xx_uart.h" void uart4_config(); void putchar(char dat); char getchar();…

GeoServer 样式指南

毫无疑问,Geoserver 是遵循 OGC 标准共享空间数据的最佳方式之一。 Geoserver 允许我们以 WMS 格式公开数据,通过以栅格(png、jpeg 等)格式显示大量矢量数据,使开发人员和用户的工作变得非常轻松。 本博客介绍了 GeoServer 功能的又一领域,即动态设置数据样式。首先,矢量…

AGM AG32 MCU在汽车UWB应用方案

AG32的汽车UWB应用方案 汽车电子产品的日益成熟&#xff0c;包括ADAS和车载信息娱乐&#xff0c;正在推动对CPLD的需求。例如&#xff0c;利用安装在车上的各种传感器&#xff08;如雷达、摄像头和激光雷达等&#xff09;来感知周围环境&#xff0c;实现实时监测和数据处理。这…

2023年网络安全行业:机遇与挑战并存

2023年全球网络安全人才概况 根据ISC2的《2023年全球网络安全人才调查报告》&#xff0c;全球的网络安全专业人才数量达到了550万&#xff0c;同比增长了8.7%。然而&#xff0c;这一年也见证了网络安全人才短缺达到了历史新高&#xff0c;缺口数量接近400万。尤其是亚太地区&am…

Centos7 的 Open Stack T 版搭建流程 --- (三)配置消息队列

配置消息队列 文章目录 配置消息队列&#xff08;1&#xff09;安装 RabbitMQ 服务并配置新用户权限controller &#xff08;2&#xff09;如何开启图形化&#xff08;拓展&#xff09; &#xff08;1&#xff09;安装 RabbitMQ 服务并配置新用户权限 controller yum install…

【支持CPU机器】一个Python文件搭建你本地图片生成编辑会话系统——TaskMatrix架构解读

一. 先上效果 TaskMatrix通过ChatGPT 和一系列 Visual Foundation 模型&#xff0c;通过聊天实现图片的绘制、问答和编辑。 二. 流程概览 1. 使用者流程 多模型会话上下文用户指令输入到本系统 -> 多模式会话基础模型 -> 理解用户指令上下文&#xff0c;调用API选择器&…