10_1、Java基本语法之枚举类的使用

news2024/10/9 6:21:44

一、枚举类的引入

        当在项目中使用一个或多个变量或常量表示某种状态时,比如,星期:星期一...星期天、就职状态:在职、离职...复岗等时,这些情况类的对象只有有限个,是确定的。这时就可以使用枚举类来定义这些对象或状态。

        关于枚举类的说明:

                1.类的对象只有限个,确定的。
                2.当需要定义一组常量时,强烈建议使用枚举类。
                3.如果枚举类只一个对象时,则可以以单例模式的方式呈现。

        那么如何定义枚举类呢?

                枚举类的实现 ①JDK1.5之前需要自定义枚举类。

                                       ②JDK1.5新增的enum关键字用于定义枚举类。

二、自定义枚举类

        自定义枚举类步骤:

                1.私化属性:使用private final修饰

                2.私化构造器,给属性赋值

                3.提供相应的所对象:public static final修饰

                4.其他诉求...

//自定义枚举类
class  Season{
    //1.私有化属性:使用private final修饰
    private final String seasonName;
    private final String seasonDesc;

    //2.私有化构造器,给属性赋值
    private Season(String seasonName,String seasonDesc){
        this.seasonName = seasonName;
        this.seasonDesc = seasonDesc;
    }
    //3提供相应的所有对象:public static final修饰
    public static final Season SPRING = new Season("春天","春意盎然");
    public static final Season SUMMER = new Season("夏天","夏日炎炎");
    public static final Season AUTUMN = new Season("秋天","秋高气爽");
    public static final Season WINTER = new Season("冬天","白雪皑皑");

    //4.其他诉求1:getXXX()方法

    public String getSeasonName() {
        return seasonName;
    }

    public String getSeasonDesc() {
        return seasonDesc;
    }
    //4.其他诉求2:toString()方法

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

三、使用enum关键字定义枚举类

        1、使用enum关键字定义枚举类的步骤:

                1、提供相应的所对象:多个对象之间使用","隔开,最后一个对象使用";"

                2、私有化属性

                3、私有化构造器,给属性赋值

                4、其他诉求

//使用enum关键字创建枚举类
enum  Season1 implements Info{
    //1提供相应的所有对象:多个对象之间使用","隔开,最后一个对象使用";"
    SPRING ("春天","春意盎然"){
        @Override
        public void show() {
            System.out.println("春天在哪里");
        }
    },
   SUMMER ("夏天","夏日炎炎"){
       public void show() {
           System.out.println("宁静的夏天");
       }
   },
    AUTUMN ("秋天","秋高气爽"){
        public void show() {
            System.out.println("秋天的童话");
        }
    },
    WINTER ("冬天","白雪皑皑"){
        public void show() {
            System.out.println("大约在冬季");
        }

    };
    //2.私有化属性:
    String seasonName;
    String seasonDesc;

    //3.私有化构造器,给属性赋值
    private Season1(String seasonName,String seasonDesc){
        this.seasonName = seasonName;
        this.seasonDesc = seasonDesc;
    }

    //4.其他诉求1:getXXX()方法

    public String getSeasonName() {
        return seasonName;
    }

    public String getSeasonDesc() {
        return seasonDesc;
    }
    //4.其他诉求2:toString()方法

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

//    public void show(){
//        System.out.println("这是一个季节");
//    }
}

interface Info{
    void show();
}

        2、Enum类的主要方法

public static void main(String[] args) {
        Season1 autumn = Season1.AUTUMN;
        //toString():返回当前枚举类对象的常量名称
        System.out.println(autumn);

        System.out.println("**************");

        //values():返回当前枚举类所有的常量数组
        Season1[] values = Season1.values();
        for (int i = 0; i < values.length; i++) {
            System.out.println(values[i]);
            values[i].show();
        }
        System.out.println("**************");

        Thread.State[] values1 = Thread.State.values();
        for (int i = 0; i < values1.length; i++) {
            System.out.println(values1[i]);
        }

        //valueOf(String objName):返回枚举类中与objName相同的对象
        Season1 winter = Season1.valueOf("WINTER");
        System.out.println(winter);

        winter.show();

//        System.out.println(autumn.getClass().getSuperclass());
    }

 

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

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

相关文章

信息安全技术 代码安全审计规范

声明 本文是学习GB-T 39412-2020 信息安全技术 代码安全审计规范. 下载地址 http://github5.com/view/789而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 代码安全审计规范 范围 本标准规定了代码安全的审计过程及方法&#xff0c;描述了软件代码安全…

Ubuntu 20.04 交叉编译opencv4.6.0

一、环境 sudo apt-get install build-essential sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjas…

Word处理控件Aspose.Words功能演示:在 Java 中将 DOCX 转换为 JSON

Aspose.Words 是一种高级Word文档处理API&#xff0c;用于执行各种文档管理和操作任务。API支持生成&#xff0c;修改&#xff0c;转换&#xff0c;呈现和打印文档&#xff0c;而无需在跨平台应用程序中直接使用Microsoft Word。此外&#xff0c; Aspose API支持流行文件格式处…

优化温度检测工程架构的心得

一、硬件与架构设计 本项目中用到的设备有&#xff1a;PC、FPGA、温度传感器DS18B20、蜂鸣器&#xff08;beep&#xff09;、数码管&#xff08;segment&#xff09;。 对于本次的项目&#xff0c;我的任务是将之前的温度检测项目的架构再进行细分&#xff0c;以及将相应的代…

Linux 监控服务器GPU状态

文章目录1 前言2 监控GPU状态2.1 使用nvidia-smi2.2 使用gpustat1 前言 深度学习需要使用GPU进行训练学习&#xff0c;在训练我们的模型时&#xff0c;我们需要直到GPU的状态&#xff0c;以帮助我们监控程序的运行。下面就介绍几种简单的方式来展示GPU的状态 2 监控GPU状态 …

基础算法 - 常见算法模板题(最简洁写法)【上】

目录 快速排序 第k个数 归并排序 逆序对的数量 二分查找 数的范围 浮点数二分 高精度 高精度加法 高精度减法 高精度乘法&#xff08;高精度x低精度&#xff09; 高精度除法 前缀和与差分 前缀和 子矩阵的和 差分 差分矩阵 快速排序 思路&#xff1a; 确认分界点&#…

【操作系统】Linux性能优化诊断pidstat+mpstat详解

文章目录1.CPU压测环境准备2.pidstatmpstat命令详解3.CPU密集型应用案例实战4.IO密集型应用案例实战5.CPU多进程调度案例实战6.pidstat命令详解进阶7.性能监控命令vmstat详解8.CPU上下文切换案例实战9.top、mpstat、pidstat、vmstat中wait含义1.CPU压测环境准备 &#xff08;1…

以人为本的方法打击身份欺骗

身份的概念是动态的——它一直在变化。在人类历史的大部分时间里&#xff0c;一个人的身份由他们的名字、他们的家庭关系和他们居住的地方组成。身份只有三四个元素。在过去的 100 年里&#xff0c;随着护照和其他身份证明文件的广泛使用&#xff0c;人们的身份也增加了额外的元…

Qt5 高分辨率支持

1. 结论 先说结论&#xff0c;在Qt5版本没有比较完美的解决方案。如果使用Qt系统提供的支持方式会出现各种小问题。如果可以的&#xff0c;建议升级为Qt6版本&#xff0c;能够更好支持高分辨率屏。而最终我在Qt5.12.12版本中&#xff0c;采用的方案是通过各种方法组合解决。 详…

【我和openGauss的故事】openGauss获奖项目讲解

文章目录前言参赛方案介绍系统需求分析主要功能模块设计思路字段基本数据分析页面及功能设计功能函数视图设计技术亮点及优势商业模式及市场前景功能测试项目总结前言 2022年8月30日华为鲲鹏应用大赛openGauss赛道上海赛区第三名获奖作品开源分享&#xff0c;我们团队参加本次…

再学C语言23:分支和跳转——if语句

一、简单if语句 if语句被称为分支语句&#xff08;branching statement&#xff09;或选择语句&#xff08;selection statement&#xff09;&#xff0c;功能是让程序选择分支中的一条前进 if语句一般形式&#xff1a; if(expression)statement 如果expression的值为真&am…

【数据结构】LeetCode移除链表元素、反转链表、链表的中间结点

目录 一、移除链表元素 1、题目说明 2、题目解析 二、反转链表 1、题目说明 2、题目解析 三、链表的中间结点 1、题目说明 2、题目解析 一、移除链表元素 1、题目说明 题目链接&#xff1a;移除链表的元素 给你一个链表的头节点 head &#xff0c;和一个整数 val&#xff0c;…

蓝牙资讯|苹果获得智能戒指专利,可用于交互 AR / VR 头显设备

美国商标和专利局&#xff08;USPTO&#xff09;批准并公示了苹果的一项智能戒指专利。这款戒指主要作为苹果混合现实头显设备的辅助交互设备&#xff0c;但可以和 iPhone、iPad、AirPods、Mac 和其它设备一起使用。 苹果希望通过智能戒指来改善 AR / VR 世界的交互体验&…

工程项目管理系统源码-简洁+好用+全面-工程项目管理系统

​ ​工程项目管理系统是指从事工程项目管理的企业&#xff08;以下简称工程项目管理企业&#xff09;受业主委托&#xff0c;按照合同约定&#xff0c;代表业主对工程项目的组织实施进行全过程或若干阶段的管理和服务。 ​系统定义 工程项目管理企业不直接与该工程项目的总承…

javafx实现的工资管理系统

&#x1f345;程序员小王的博客&#xff1a;程序员小王的博客 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 如有编辑错误联系作者&#xff0c;如果有比较好的文章欢迎分享给我&#xff0c;我会取其精华去其糟粕 &#x1f345;java自学的学习…

ESP8266 SDK开发(ESP8266_RTOS_SDK 3.x)之AiThinkerIDE_V1.5.2安装、配置以及编写烧录一个程序

【本文发布于https://blog.csdn.net/Stack_/article/details/128509864&#xff0c;未经允许不得转载&#xff0c;转载须注明出处】 前言 乐鑫官方不搞IDE&#xff0c;安信可搞了IDE&#xff0c;但是各版本之间安装配置有差异&#xff0c;还没有文档说明。官方安装配置教程不完…

CTFHUB技能树-SSRF-redis协议踩坑

在gopherus上面输入命令&#xff1a;python gophers.py --exploit redis 将自动生成的代码url解密可以得到 如果是get传参需要再进行一次url编码 虽然蚁剑连接不上但可以用urlshell?cmdls / 获取flag 接下来看可以连接蚁剑的代码 文件名最好还是用shell.php 我测试了s.…

【C++初阶8-vector实现】没想的那么简单!

前言 本期带来vector实现&#xff0c;和以前的顺序表差别不大。 博主水平有限&#xff0c;不足之处望请斧正&#xff01; 预备知识 实现参考SGI的stl30 我们看这种源码&#xff0c;要抓框架看&#xff1a;首先找类&#xff0c;看它的属性&#xff0c;再看方法 template &l…

全方位解析 C 端和 B 端的产品特性

近年来&#xff0c;互联网进入下半场&#xff0c;C 端流量红利逐渐消退&#xff0c;很多企业转向了 B 端服务&#xff0c;随之而来的是产品设计者的转型&#xff0c;现在越来越多的 C 端产品设计师开始涉足到 B 端产品的设计&#xff0c;这是一个知识迁移的过程&#xff0c;需要…

自动驾驶专题介绍 ———— 摄像头

文章目录介绍工作原理实现功能分类按通信协议区分按不同感光芯片按像元排列方式介绍 摄像头可以采集汽车周边的图像信息&#xff0c;跟人类的眼睛最为接近。摄像头可以拥有较广的视场角、较大的分辨率&#xff0c;还可以提供颜色和纹理等信息。这些信息对于实现自动驾驶功能是存…