【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());//0
    		 System.out.println(weeks[2].ordinal());//2
    		 System.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(){}  //默认就是private
	Season(String desc){//默认就是private
		this.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);//赵四,男
	}
}

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

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

相关文章

Redis的集群模式——Java全栈知识(20)

1、主从模式 Redis 支持主从模式的集群搭建&#xff0c;这是 Redis 提供的最简单的集群模式搭建方案&#xff0c;目的是解决单点服务器宕机的问题。当单点服务器发生故障的时候保证 Redis 正常运行。 主从模式主要是将集群中的 Redis 节点分为主节点和从节点。然后读和写发生在…

C++11续——智能指针(出现原因至源码模拟)

前言&#xff1a;在C11里面提出了一个新的语法 try catch用来捕捉异常&#xff0c;这样子能不使用return和exit的前提下退出程序就得到错误信息&#xff0c;但是随之而来的就是一个新的问题&#xff0c;try catch退出程序之后可能带来了无法释放的内存泄露问题&#xff0c;原因…

微信小程序 19:小程序分包

对小程序进行分包的好处主要有以下两点 可以优化小程序首次启动的下载时间在多团队共同开发时可以更好的解偶协作 分包前小程序的项目构成 分包前&#xff0c;小程序项目中所有的页面资源都被打包到一起&#xff0c;导致整个项目体积过大&#xff0c;影响小程序首次启动的下…

vue自定义权限指令

定义v-hasPermi指令 /*** v-hasPermi 操作权限处理*/import useUserStore from /store/modules/userexport default {mounted(el, binding, vnode) {const { value } bindingconst all_permission "*:*:*";const permissions useUserStore().permissions&#xff…

算法-卡尔曼滤波之基本数学的概念

1.均值 定义&#xff1a;均值是一组数据中所有数值的总和除以数据的数量。均值是数据的中心趋势的一种度量&#xff0c;通常用符号 xˉ 表示。 &#xff1a;对于包含 n 个数据的数据集 {&#x1d465;1,&#x1d465;2,...,&#x1d465;&#x1d45b;}&#xff0c;均值 xˉ 计…

常见 Web 安全攻防总结

Web 安全的对于 Web 从业人员来说是一个非常重要的课题&#xff0c;所以在这里总结一下 Web 相关的安全攻防知识&#xff0c;希望以后不要再踩雷&#xff0c;也希望对看到这篇文章的同学有所帮助。今天这边文章主要的内容就是分析几种常见的攻击的类型以及防御的方法。 也许你对…

利用CAD绘制角度斜线的简易指南---模大狮模型网

在CAD设计中&#xff0c;绘制角度斜线是常见的需求&#xff0c;尤其在工程、建筑等领域中。正确绘制角度斜线不仅可以提高图纸的清晰度和美观度&#xff0c;还有助于准确表达设计意图。本文将介绍如何利用CAD软件进行角度斜线的绘制&#xff0c;为您提供简明易懂的操作指南。 一…

什么是资源池技术?它有什么用?

在开发应用程序过程中&#xff0c;涉及到对系统资源进行有效管理时往往会用到池化操作。资源池模式的应用场景很多&#xff0c;可以管理那些想要通过重用来分摊昂贵初始化代价的对象&#xff0c;而管理数据库连接就是很好的一种应用场景。数据库连接池作为一种典型的池化技术手…

云端的艺术革命:云渲染如何重塑动画与视觉特效产业

在 2019 年&#xff0c;乔恩费儒&#xff08;Jon Favreau&#xff09;决定重拍迪士尼的经典电影《狮子王》。他的创新构想是以真实动物为模型&#xff0c;在非洲草原上拍摄&#xff0c;由真实动物“出演”的辛巴和其他角色&#xff0c;随后通过配音赋予它们生命。 为了实现这一…

vue前端时间段选择控件

实现效果: 可选具体的某天的某时某分某秒 vue前端代码: <el-form-item label"日期"><el-date-pickerv-model"daterangerq"style"width: 240px"value-format"yyyy-MM-dd HH:mm:ss"type"datetimerange"range-separat…

[笔记] srlua库编译

文章目录 前言一、环境二、编译过程2.1 gcc安装2.2 编译lua2.3 编译srlua库 三、测试srlua库参考总结 前言 一、环境 centos7.9 gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) lua5.1源码 srlua 源码 二、编译过程 2.1 gcc安装 yum install gcc这里gcc安装过程和环…

基础学习-Git(分布式版本控制系统)

学习视频推荐 http://【黑马程序员Git全套教程&#xff0c;完整的git项目管理工具教程&#xff0c;一套精通git】 https://www.bilibili.com/video/BV1MU4y1Y7h5/?p5&share_sourcecopy_web&vd_source2b85bd9be9213709642d908906c3d863 1、Git环境配置 安装Git Git下…

CAXA 3D实体设计2024:塑造未来的创新引擎

在数字化时代的浪潮中&#xff0c;3D CAD实体建模设计正成为推动工业创新的核心动力。CAXA 3D实体设计2024&#xff0c;以其卓越的性能和丰富的功能&#xff0c;为企业和个人用户带来了前所未有的设计体验。 CAXA 3D实体设计2024不仅拥有直观易用的界面&#xff0c;还配备了强…

【JS】call和 apply函数的详解

JavaScript 中 call() 和 apply() 函数的详解 在JavaScript中&#xff0c;call()和apply()都是非常重要的方法&#xff0c;用于调用函数时指定函数体内的this的值&#xff0c;从而实现不同对象之间的方法共享。尽管它们的功能非常相似&#xff0c;但在实际使用中各有其优势和特…

数据结构选择题(期末)

1.给定NN的二维数组A&#xff0c;则在不改变数组的前提下&#xff0c;查找最大元素的时间复杂度是&#xff08;A&#xff09;&#xff1a; A.O(N2) B.O(NlogN) C.O(N) D.O(N2logN) 两重循环即O(N2)的时间复杂度 2.与数据元素本身的形式、内容、相对位置、个数无关的是数据的…

OpenAI 发布新款大型语言模型 GPT-4o,带大家了解最新ChatGPT动态。

OpenAI 发布新款大型语言模型 GPT-4o 昨日OpenAI 举办了一场线上活动&#xff0c;正式发布了其最新研发的 AI 模型 GPT-4o&#xff0c;并详细介绍了该模型的强大功能和未来发展规划。此次发布标志着 AI 技术的重大突破&#xff0c;为用户提供了更加便捷、高效的 AI 工具&#…

荆州科技局副局长乔梁莅临湖北点赋网络科技公司参观调研

近日&#xff0c;荆州科技局副局长乔梁&#xff0c;莅临湖北点赋网络科技公司进行参观调研。点赋科技总经理崔梦娇亲自陪同&#xff0c;向副局长介绍了公司的D咖智能饮品机器人经营状况和研发进展情况。 在参观过程中&#xff0c;副局长乔梁对点赋科技的创新能力和技术成果给予…

【计算机毕业设计】基于SSM++jsp的高校专业信息管理系统【源码+lw+部署文档+讲解】

目录 第1章 绪论 1.1 课题背景 1.2 课题意义 1.3 研究内容 第2章 开发环境与技术 2.1 MYSQL数据库 2.2 JSP技术 2.3 SSM框架 第3章 系统分析 3.1 可行性分析 3.1.1 技术可行性 3.1.2 经济可行性 3.1.3 操作可行性 3.2 系统流程 3.2.1 操作流程 3.2.2 登录流程 3.2.3 删除信息流…

FedDML:Federated Mutual Learning

这篇把DML运用到FL上 论文地址:arvix code: 作者git 贡献 我们针对三种异质性(DOM)提出了一种新颖的联邦学习范式,称为联邦相互学习(FML)。 首先,FML 处理数据和目标通过使每个客户能够训练个性化模型来实现异质性。 从OH的意义上来说,DH对服务器有害,但对客户端有…

全面了解 Swagger 导出功能的使用方式

Swagger 是一个强大的平台&#xff0c;专门用于开发、构建和记录 RESTful Web 接口。通过其提供的交互式用户界面&#xff0c;开发人员能够轻松且迅速地创建和测试 API。Swagger 还允许用户以多种格式&#xff0c;包括 JSON 和 Markdown&#xff0c;导出 API 文档。选择 JSON 格…