Java重修笔记 第二十九天 枚举类

news2024/9/29 19:18:34
  • 枚举类

1. 定义:枚举属于一种特殊的类,里面只包含一组有限的特定的对象,枚举对象通常为只读,不能修改。枚举对象名通常为大写,静态不可修改

2. 运用场景:需要特定对象的场景,例如四季只有春夏秋冬,那么季节类只能创建这四个对象。

  • 自定义枚举类

1. 自定义枚举类首先要把构造器私有化不让随便创建对象

2. 将对象以静态成员的形式创建出来,对外暴露出来方便以后调用

3. 不提供set方法,因为枚举对象通常为只读

public class Enum01 {
    public static void main(String[] args) {
        System.out.println(Season.SPRING);
    }
}

class Season {
    private String name;
    private String desc; // 描述

    // 将构造器私有化, 这样就不能随便创建对象了
    private Season(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }

    // 以静态成员的方式定义所需对象
    public static final Season SPRING = new Season("春天","温暖");
    public static final Season WINTER = new Season("冬天","寒冷");
    public static final Season AUTUMN = new Season("秋天","凉爽");
    public static final Season SUMMER = new Season("夏天","炎热");

    @Override
    public String toString() {
        return "Season{" +
                "name='" + name + '\'' +
                ", desc='" + desc + '\'' +
                '}';
    }
}

运行结果:

  • enum关键字实现枚举

1. enum关键字实现枚举类,构造器不用添加访问修饰符,默认为private,因为枚举类不能随便创建对象

2. enum关键字实现枚举类本质上还是类,只不过它将枚举对象放在了第一行,用逗号隔开分号结尾

3. 调用枚举对象通过枚举类名.枚举对象名来实现

4. 如果用无参构造器的话,连后面的参数列表都不用写

5. 枚举对象本质是静态的对象,所以各个对象底层地址是固定的

6. 使用enum关键字后,该枚举类会隐式的继承Enum类,所以就不能继承其他类了,但可以实现接口,规则和普通类实现接口一致

public class Enum02 {
    public static void main(String[] args) {
        System.out.println(Season02.SUMMER);
        System.out.println(Season02.OTHER);
    }
}

enum Season02 {
    // 将枚举对象写在第一行, 用逗号隔开
    SPRING("春天", "温暖"),
    WINTER("冬天", "寒冷"),
    AUTUMN("秋天", "凉爽"),
    SUMMER("夏天", "炎热"),
    OTHER; // 如果用无参构造器的话, 连后面的参数列表都不用写

    private String name;
    private String desc; // 描述

    // 将构造器私有化, 这样就不能随便创建对象了
    Season02(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }

    Season02() {
        this.name = "无";
        this.desc = "无";
    }

    @Override
    public String toString() {
        return "Season{" +
                "name='" + name + '\'' +
                ", desc='" + desc + '\'' +
                '}';
    }

    public String getDesc() {
        return desc;
    }

    public String getName() {
        return name;
    }
}

运行结果:

  • 枚举类的常用方法

1. public String toString()

        已经被Enum类重写,返回值是该对象在枚举类里面的常量名

2. public final int ordinal()

        返回该枚举对象在枚举类中从0开始的次序

3. public static  <T extends Enum<T>> T[] values()

        API和源码里没有,编译器自动插入的静态方法,返回一个枚举数组,里面存放该枚举类的所有枚举实例对象

4. public static <T extends Enum<T>> T valueOf(类<T> enumType,String name)

        实际上只需传入字符串参数,返回字符串对应的枚举对象,但前提是该字符串必须为枚举类中已有的枚举对象常量名,否则报错。不允许传入空字符串,否则也会报错

5. public final int compareTo(E o)

        返回前一个枚举对象的编号,减去参数传进来枚举对象的编号的值

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

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

相关文章

Java二十三种设计模式-桥接模式(10/23)

桥接模式&#xff1a;解耦抽象与实现的灵活设计 引言 桥接模式&#xff08;Bridge Pattern&#xff09;是一种结构型设计模式&#xff0c;用于将抽象部分与其实现部分分离&#xff0c;使它们可以独立地变化。它是一种对象结构型模式&#xff0c;又称为柄体(Handle and Body)模…

PCL1.11.0下载安装(Windows)

PCL1.11.0下载安装&#xff08;Windows&#xff09; PCL安装需要的几个模块如下图所示&#xff1a; 一、PCL1.11.0下载 PCL以1.11.0版本为例&#xff0c;打开下载连接&#xff08;PCL下载&#xff09; 下载PCL-1.11.0-AllInOne-msvc2019-win64.exe和pcl-1.11.0-pdb-msvc2019-…

Springboot指定扫描路径

方式一&#xff1a;通过在启动类的SpringbootApplication中指定包扫描或类扫描 指定需要扫描的包 scanBasePackages{"待扫描包1","待扫描包2", . . . ," "} 指定需要扫描的类 scanBasePackageClasses{类1.class,类2.class,...} 方式二&#xff…

Linux系统编程 --- 动静态库

一、回顾&#xff0c;制作一个库 libXXX.a --- 静态链接 libYYY.so --- 动态链接 设计一个库&#xff1a; 把我们提供的方法&#xff0c;给别人用&#xff1a; 1、把源文件直接给他 2、把我们的源代码打包成库 库 头文件。 原理&#xff1a;把所有的.o文件打包成.a文件也…

(免费领源码)python#Django#MYSQL医院预约挂号系统24802-计算机毕业设计项目选题推荐

摘 要 随着互联网时代的到来&#xff0c;同时计算机网络技术高速发展&#xff0c;网络管理运用也变得越来越广泛。因此&#xff0c;建立一个基于django 医院预约挂号系统 &#xff0c;会使&#xff1b;医院预约挂号系统的管理工作系统化、规范化&#xff0c;也会提高平台形象&a…

宝塔企业版安装命令

使用方法 安装脚本: wget -O install.sh https://www.xpnal.cn/install/install_6.0.sh \&\& bash install.sh 更新脚本: curl https://www.xpnal.cn/install/update6.sh|bash 脚本说明: 没有安装过宝塔直接执行安装脚本&#xff0c;安装过执行更新脚本。 提醒 …

【Material-UI】多选模式(Multiple values)与Autocomplete的高级用法解析

文章目录 一、多选模式的基本用法二、高级用法1. 固定选项&#xff08;Fixed options&#xff09;2. 复选框&#xff08;Checkboxes&#xff09;3. 限制标签显示数量&#xff08;Limit tags&#xff09; 三、性能优化与最佳实践1. 筛选已选项&#xff08;filterSelectedOptions…

Scratch的下载与安装

如果你在某搜索引擎用这个&#xff0c;就是离被骗钱不远了 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 废话不多说&#xff0c;直接放软件安装包。重要的事情说三遍&#xff0c;收费的全是骗人的&#xff01;收费的全是骗人的&#xff01;收费的全是…

【C++题解】1015. 鸡兔同笼问题

欢迎关注本专栏《C从零基础到信奥赛入门级&#xff08;CSP-J&#xff09;》 问题&#xff1a;1015. 鸡兔同笼问题 类型&#xff1a;简单穷举 题目描述&#xff1a; 鸡兔同笼问题&#xff1a;一个笼子里面有鸡若干只&#xff0c;兔若干只。共有头 50 个&#xff0c;共有腿 16…

C语言的回调函数(详解qsort函数)

在上一篇文章中我们学习了指针与数组之间的关系&#xff0c;学习了指针数组&#xff0c;数组指针变量&#xff0c;函数指针变量和函数指针数组。那么接下来我们要学习的是一个利用函数指针变量去解决和简化各种问题的回调函数。 一、回调函数 回调函数在编程中是一种很常见的…

pip install -r requirements.txt下载某个.whl文件较慢的问题

访问PYPI官网。搜索该文件名字 如果不是自己要的版本&#xff0c;点击左边的Release history。 选择版本后再次在Download files页面下载.whl文件 下载完之后切换至自己的项目解释器虚拟环境。 python -m pip install 文件名.whl 如果你改名python.exe为python3.exe&#xff…

【消息队列】RabbitMQ 面试篇

&#x1f397;️ 主页&#xff1a;小夜时雨 &#x1f397;️专栏&#xff1a;消息队列 &#x1f397;️如何活着&#xff0c;是我找寻的方向 目录 1. RabbitMQ 有哪些工作模式&#xff1f;2. 如何保证消息不丢失&#xff08;可靠性&#xff09;3. 什么是死信队列&#xff0c;如…

基于K210智能人脸识别+车牌识别系统(完整工程资料源码)

运行效果&#xff1a; 基于K210的智能人脸与车牌识别系统工程 目录&#xff1a; 运行效果&#xff1a; 目录&#xff1a; 前言&#xff1a; 一、国内外研究现状与发展趋势 二、相关技术基础 2.1 人脸识别技术 2.2 车牌识别技术 三、智能小区门禁系统设计 3.1 系统设计方案 3.2 …

【网络编程】网络原理(一)

系列文章目录 1、 初识网络 2、网络编程的基础使用&#xff08;一&#xff09; 文章目录 系列文章目录前言一、端口号的使用二、UDP报文学习1.报文格式2.MD5算法 总结 前言 在前文中&#xff0c;主要对UDP和TCP协议有了简单的了解&#xff0c;而这两种协议是负责传输层的内容…

组件设计原则

state数据结构设计 用数据描述所有内容数据要结构化&#xff0c;易于程序操作&#xff08;遍历、查找&#xff09;数据要可扩展&#xff0c;以便增加新的功能 组件设计组件通讯 从功能上拆分层次尽量让组件原子化容器组件&#xff08;只管理数据&#xff09;& UI组件&am…

【MySQL】库操作,数据类型

目录 MySQL简介SQL语句分类库操作语句展示数据库创建数据库使用数据库删除数据库 数据类型整型浮点型字符串日期类型 MySQL简介 数据库有关系型数据库和非关系型数据库。 关系型数据库&#xff1a;是指采用了关系模型来组织数据的数据库。 简单来说&#xff0c;关系模型指的就…

科普文:JUC系列之ConcurrentLinkedQueue非阻塞队列用法

概叙 **Queue接口与List、Set同一级别&#xff0c;都是继承了Collection接口**。队列是一种数据结构&#xff0e;它有两个基本操作&#xff1a;在队列尾部加人一个元素&#xff0c;和从队列头部移除一个元素&#xff0c;队列以一种先进先出的方式管理数据。 队列分为两种&#…

pikachu漏洞平台~文件包含漏洞

在PHP程序中使用文件包含的对象可以被前端的用户控制且没有经过过滤或严格的定义&#xff0c;用户可以将其他的文件作为参数带入到PHP代码中解释执行&#xff0c;从而造成敏感信息泄露/程序文件读取/GetShell等危害的漏洞。 0x01文件包含漏洞 连接成功&#xff0c;完毕&#x…

聚焦IOC容器刷新环节postProcessBeanFactory(BeanFactory后置处理)专项

目录 一、IOC容器的刷新环节快速回顾 二、postProcessBeanFactory源码展示分析 &#xff08;一&#xff09;模版方法postProcessBeanFactory &#xff08;二&#xff09;AnnotationConfigServletWebServerApplicationContext 调用父类的 postProcessBeanFactory 包扫描 …

oracle(19c)用户管理

简介 本文介绍 Oracle 中的用户管理&#xff0c;包含以下内容&#xff1a; 概念介绍 系统用户 解锁 hr 用户 创建用户 用户相关案例 使用 Profile 管理用户口令 Oracle 的认证方式 重置管理员(sys)密码 1. 概念介绍 使用前可以自行安装oracle数据库 oracle19c安装&a…