【Java基础】枚举类的方法及应用

如何实现让一个类有固定个数的对象

手动封装构造方法(private) → 创建静态对象 → final修饰静态对象,使其成为常量

class Season { //枚举类public final static Season SPRING = new Season();public final static Season SUMMER = new Season();public final static Season SUTUMN = new Season();public final static Season WINTER = new Season();private Season() {}public void show() {System.out.println("hello");}
}
class Demo7 {public static void main(String[] args) {Season chunji = Season.SPRING;chunji.show();}
}

enum

从 JDK1.5 开始

enum Season {SPRING,SUMMER,AUTUMN,WINTER  //枚举项,枚举常量
}
class Demo7{public static void main(String[] args) {Season chunji = Season.SPRING;chunji.show();}
}

反编译后,跟上一个步骤类似
在这里插入图片描述
枚举类的本质就是一个类,被final修饰了,不能有子类,继承了java.lang.Enum

枚举类方法

  • int ordinal()
    返回枚举项的编号,每个枚举项都有一个编号,编号从0开始

    enum Week{MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY
    }
    class Demo10{public static void main(String[] args){Week[] weeks={Week.MONDAY,Week.TUESDAY,Week.WEDNESDAY,Week.THURSDAY,Week.FRIDAY,Week.SATURDAY,Week.SUNDAY};System.out.println(weeks[0].ordinal());//0System.out.println(weeks[2].ordinal());//2System.out.println(weeks[6].ordinal());//6
    
  • int compareTo(E o)
    比较枚举项的大小,比较的是编号

    System.out.println(weeks[6].compareTo(weeks[2]));//4
    System.out.println(weeks[2].compareTo(weeks[4]));//-2
    System.out.println(weeks[2].compareTo(weeks[2]));//0
    
  • String name()
    返回枚举常量的名称,与其枚举声明中声明的完全相同

    System.out.println(weeks[6].name());//SUNDAY
    System.out.println(weeks[4].name());//FRIDAY
    
  • String toString()
    返回声明中包含的此枚举常量的名称

    System.out.println(weeks[6].toString());//SUNDAY
    System.out.println(weeks[4].toString());//FRIDAY
    
  • static <T extends Enum> T value0f(Class enumType, String name)
    返回具有指定名称的指定枚举类型的枚举常量

    Week obj = Enum.valueOf(Week.class,"MONDAY"); //MONDAY
    
  • public static Week[] values()
    得到所有枚举项的数组

    Week[] arr = Week.values();
    for(Week wk:arr)System.out.println(wk);//MONDAY TUESDAY WEDNESDAY ……
    
  • public static Week valueOf(java.lang.String);
    返回具有指定名称的指定枚举类型的枚举常量

    Week xingqi = Week.valueOf("MONDAY");
    System.out.println(xingqi);//MONDAY
    

定义属性

enum中构造方法默认被private修饰

enum Season{SPRING("春季"),SUMMER("夏季"),AUTUMN("秋季"),WINTER("冬季");  private String desc;Season(){}  //默认就是privateSeason(String desc){//默认就是privatethis.desc=desc;}public String getDesc(){return desc;}public String toString(){return desc;} 
}
class Demo11{public static void main(String[] args){Season ss = Season.SUMMER;System.out.println(ss);}
}

定义方法

静态、非静态方法

enum Season{……………………public static void show(){System.out.println("Hello");}public void fun(){System.out.println("fun");}
}
class  Demo12 
{public static void main(String[] args) {Season xiaji=Season.SUMMER;xiaji.show();xiaji.fun();}
}

抽象方法

含有抽象方法前的枚举类前不用写abstract,在每个枚举项里都必须重写抽象方法

enum Season{SPRING("春季"){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("冬季");}};  ……………………public abstract void show();
}
class Demo13 
{public static void main(String[] args){Season.WINTER.show();}
}

实现接口

interface inter{void ff();
}
enum Season implements inter{SPRING("春季"),SUMMER("夏季"),AUTUMN("秋季"),WINTER("冬季");  ………………public void ff(){System.out.println("ok");}
}
class Demo14{public static void main(String[] args){Season.AUTUMN.ff();Enum  jijie=Season.WINTER;  //多态Object obj=Season.WINTER;}
}

练习

定义一个Person类,有姓名和性别属性,性别定义成枚举

enum Gender{MALE("男"),FEMALE("女");private String desc;Gender(){}Gender(String desc){this.desc=desc;}public String toString(){return desc;}
}
class Person{private String name;private Gender sex;Person(){}Person(String name,Gender sex){this.name=name;this.sex=sex;}public String toString(){return name+","+sex;}
}
class Demo15 {public static void main(String[] args) {Person ren=new Person("赵四",Gender.MALE);System.out.println(ren);//赵四,男}
}

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

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

相关文章

废品回收微信小程序基于FastAdmin+ThinkPHP+UniApp(源码搭建/上线/运营/售后/更新)

一款基于FastAdminThinkPHPUniApp开发的废品回收系统&#xff0c;适用废品回收站、再生资源回收公司上门回收使用的小程序。 一、FastAdmin框架特色功能及优势 模块化开发&#xff1a;控制器、模型、视图、JS一一对应&#xff0c;使用RequireJS进行插件机制&#xff0c;支持插…

sql操作、发送http请求和邮件发送 全栈开发之路——后端篇(2)

全栈开发一条龙——前端篇 第一篇&#xff1a;框架确定、ide设置与项目创建 第二篇&#xff1a;介绍项目文件意义、组件结构与导入以及setup的引入。 第三篇&#xff1a;setup语法&#xff0c;设置响应式数据。 第四篇&#xff1a;数据绑定、计算属性和watch监视 第五篇 : 组件…

[BJDCTF 2020]easy_md5、[HNCTF 2022 Week1]Interesting_include、[GDOUCTF 2023]泄露的伪装

目录 [BJDCTF 2020]easy_md5 ffifdyop [SWPUCTF 2021 新生赛]crypto8 [HNCTF 2022 Week1]Interesting_include php://filter协议 [GDOUCTF 2023]泄露的伪装 [BJDCTF 2020]easy_md5 尝试输入一个1&#xff0c;发现输入的内容会通过get传递但是没有其他回显 观察一下响应…

VictoriaMetrics

概念 介绍 VictoriaMetrics&#xff0c;是一个快速高效、经济并且可扩展的监控解决方案和时序数据库 本文均用VM简称VictoriaMetric 作用 用于作为prometheus的长期储存方案&#xff0c;代替prometheus存储监控采集的数据 优点 远程存储&#xff1a;可作为单一或多个Pro…

【算法】二分查找——二分查找

本节博客详述“二分查找”并且以例子来进行讨论&#xff0c;有需要借鉴即可。 目录 1.二分查找1.1使用前提1.2模板 2.题目3.题解代码示例4.二分查找的一般模板5.总结 1.二分查找 1.1使用前提 使用的条件&#xff1a;数组具有“二段性”&#xff0c;二段性指的是数组可以根据某…

110份财务常用excel模板(个税、采购、报销、预算),超实用!

如果你还在为报表头疼&#xff0c;那你一定不能错过这篇干货满满的分享&#xff01; 个税报表 个人所得税&#xff0c;听起来就头大&#xff1f;别担心&#xff0c;掌握这些技巧&#xff0c;轻松搞定&#xff01; - 记录员工收入&#xff0c;确保数据准确无误 - 计算应纳税…

【Unity Shader入门精要 第7章】基础纹理(一)

1. 纹理映射 每一张纹理可以看作拥有一个属于自己的2D坐标空间&#xff0c;其横轴用U表示&#xff0c;纵轴用V表示&#xff0c;因此也称为UV坐标空间。 UV空间的坐标范围为[0&#xff0c;0]到[1&#xff0c;1]&#xff0c;在Unity中&#xff0c;UV空间也是从左下到右上&#…

Network Compression

听课&#xff08;李宏毅老师的&#xff09;笔记&#xff0c;方便梳理框架&#xff0c;以作复习之用。本节课主要讲了Network Compression&#xff0c;包括为什么要压缩&#xff0c;压缩的主要手段&#xff08;pruning,knowledge distillation,parameter quantization,architect…

Elasticsearch_sql插件安装+使用

一、安装 前提是你先安装好了elasticseach&#xff0c;安装过程在我上一篇博客有说&#xff0c;可以看一下。 在elasticsearch容器启动的情况下&#xff0c;进入到elasticsearch容器&#xff0c;Elasticsearch_sql仓库&#xff0c;比如我的版本是8.11.2&#xff0c;那么我就选…

[蓝桥杯]真题讲解:抓娃娃(思维+二分)

[蓝桥杯]真题讲解&#xff1a;抓娃娃&#xff08;思维二分&#xff09; 一、视频讲解二、正解代码1、C2、python33、Java 一、视频讲解 [蓝桥杯]真题讲解&#xff1a;抓娃娃&#xff08;思维二分&#xff09;&#xff09; 二、正解代码 1、C #include<bits/stdc.h> #d…

前端CSS3基础1(新增长度单位,盒子模型,背景,边框,文本属性,渐变,字体,2D变换,3D变换)

前端CSS3基础1&#xff08;新增长度单位&#xff0c;盒子模型&#xff0c;背景&#xff0c;边框&#xff0c;文本属性&#xff0c;渐变&#xff0c;字体&#xff0c;2D变换&#xff0c;3D变换&#xff09; CSS3 新增长度单位CSS3 新增盒子模型相关属性box-sizing怪异盒模型box-…

ambari-server高可用配置方案

制品 https://kdocs.cn/l/cie4hSgvUunX 前置条件 环境需要支持VRRP协议 环境需要配置好yum源 变更影响面 变更不会影响其他组件 配置lb(需要客户侧配置并提供LB地址) 转发方式选择 主备 监听端口为8080、8440、8441 协议为tcp 后端监听选择kde-offline1为主

【RAG 论文】UPR:使用 LLM 来做检索后的 re-rank

论文&#xff1a;Improving Passage Retrieval with Zero-Shot Question Generation ⭐⭐⭐⭐ EMNLP 2022, arXiv:2204.07496 Code: github.com/DevSinghSachan/unsupervised-passage-reranking 论文&#xff1a;Open-source Large Language Models are Strong Zero-shot Query…

【HR】阿里三板斧--20240514

参考https://blog.csdn.net/haydenwang8287/article/details/113541512 头部三板斧 战略能不能落地、文化能不能得到传承、人才能不能得到保障。 头部三板斧适用的核心场景有三个&#xff1a;一是战略不靠谱&#xff1b;二是组织效率低、不聚心&#xff1b;三是人才跟不上。对…

c++ 各版本特性介绍

c C是一种高级编程语言&#xff0c;以其强大的功能、灵活性和高效性而闻名。它是由Bjarne Stroustrup在20世纪80年代初期在贝尔实验室开发的&#xff0c;作为C语言的一个扩展。C不仅包含了C语言的所有特性&#xff0c;还引入了面向对象编程&#xff08;OOP&#xff09;的概念&…

基于Vue3+ElementPlus项目,复制文字到剪贴板功能实践指南,揭秘使用js-tool-big-box工具库的核心优势

在前端开发项目中&#xff0c;很多时候有那么一个场景&#xff0c;就是要求将一段文案复制下来&#xff0c;这段文案可能是一串很长的id&#xff0c;可能是一条命令语句&#xff0c;可能是一小段文案&#xff0c;复制到剪贴板上。这样有利于用户复制到其他地方去&#xff0c;使…

微软必应bing国内官方代理商,广告账户如何开户?

微软必应Bing作为全球知名的搜索引擎之一&#xff0c;其广告平台为众多企业提供了广阔的市场空间和精准的推广机会。对于中国内地的企业而言&#xff0c;通过必应Bing开展国内广告推广不仅能够触及更广泛的潜在客户群体&#xff0c;还能有效提升品牌影响力。通过微软必应Bing国…

搜索引擎的设计与实现(三)

目录 5 系统详细实现 5.1实现环境配置 5.2功能实现 5.2.1 建立索引 5.2.2 文件搜索实现 5.2.3 数据库的连接配置 5.2.4 数据库搜索实现 5.2.5 后台数据编辑实现 前面内容请移步 搜索引擎的设计与实现&#xff08;二&#xff09; 免费源代码&毕业设计论文 搜索…

git-删除workspace.xml的跟踪

问题描述 .gitignore 文件内容如下&#xff1a; .pyc *.pyc user_files/ .vscode/ __pycache__//.idea/misc.xml /.idea/modules.xml /.idea/inspectionProfiles/profiles_settings.xml /.idea/inspectionProfiles/Project_Default.xml /.idea/batrp_webbackend-server-dev.i…

NARUTO 复现记录

1 环境配置 下载项目&#xff0c;一定要 git 下载全项目&#xff0c;下载完后要检查third_parities 里面的coslam和neural_slam_eval 文件全不全。 git clone --recursive https://github.com/oppo-us-research/NARUTO.git 环境配置 注意 bash scripts/installation/conda…