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

news2025/2/24 9:16:24

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

手动封装构造方法(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);//赵四,男
	}
}

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

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

相关文章

【前端】打砖块游戏:实现细节介绍

打砖块游戏:实现细节介绍 在本文中,我将详细介绍如何使用HTML、CSS和JavaScript技术构建一个简单的打砖块游戏。我们将重点讨论游戏的三个核心技术方面:碰撞检测、画图和事件监听。 完整代码我放在:github可以直接拉取代码测试。 游戏概览 打砖块游戏中,玩家通过控制底…

如何用Rust获取本机CPU、内存在Web网页中显示?

目录 一、需求描述 二、具体操作步骤 三、知识点 1、systemstat 2、Actix 一、需求描述 需求&#xff1a; 1、需要使用Rust进行后端开发获取本机CPU和内存信息&#xff1b; 2、使用WEB框架发布API&#xff1b; 3、然后使用HTML/CSS/JavaScript进行前端开发&#xff0…

2024 年中国大学生程序设计竞赛全国邀请赛(郑州)暨第六届CCPC河南省大学生程序 设计竞赛Problem A. Once In My Life

//构造 #include<bits/stdc.h> using namespace std; #define int long long int a,b,c ; signed main() {ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);cin>>a;while(a--){cin>>b>>c;int mb,k0;while(m){m/10;k;}int v0;for(int i1;i<9;…

Linux之·网络编程·I/O复用·select

系列文章目录 文章目录 前言一、概述1.1 介绍IO复用的概念和作用1.1.1 I/O复用具体使用的场景1.1.2 I/O复用常用函数 二、select函数的重要性和用途2.1 基本的select函数2.2 如何使用FD_SET、FD_CLR等宏来设置和清除文件描述符集合2.3 select()函数函数整体使用框架&#xff1a…

如何将3DMax中制作的特效渲染为AVI格式视频?---模大狮模型网

在3D设计中&#xff0c;制作出精美的特效是吸引眼球的关键之一。然而&#xff0c;仅仅制作特效还不够&#xff0c;将其渲染为视频并分享给观众才能展现出其真正的魅力。本文将为您提供一份完整的指南&#xff0c;教您如何在3ds Max中将制作的特效渲染为AVI格式视频&#xff0c;…

Linux-基础命令第三天

1、命令&#xff1a;wc 作用&#xff1a;统计行数、单词数、字符数 格式&#xff1a;wc 选项 文件名 例&#xff1a; 统计文件中的行数、单词数、字符数 说明&#xff1a;59代表行数&#xff0c;111代表单词数&#xff0c;2713代表字符数&#xff0c;a.txt代表文件名 选项…

固定优先级仲裁器及RR轮询Verilog实现

一、固定优先仲裁器 所谓固定优先仲裁器&#xff0c;即其优先级是固定的&#xff0c;当有多个请求到达时&#xff0c;按照优先级得到仲裁结果&#xff0c;并且优先级一直保持不变。如当有四个请求到达时&#xff0c;如果最高优先级为0号请求&#xff0c;则对0号请求响应&#…

Steam喜加一,限时免费领取《Machinika Museum》

《Machinika Museum》限时免费领取啦&#xff01;这是一款烧脑解谜游戏&#xff0c;让你挖掘神秘外星装置的秘密。在这个非常特别的异星装置博物馆里&#xff0c;你将扮演一名研究员&#xff0c;负责解开各种机械谜题&#xff0c;探索背后的故事。 在这个未来世界&#xff0c;外…

docker 部署 prometheus + Grafana +

# prometheus安装 # 1.拉镜像 docker pull prom/prometheus:v2.43.0 # 2.创建配置文件 mkdir /opt/prometheus/data cd /opt/prometheus/ vi prometheus.yml # 3.使用root用户启动 docker run --name prometheus -d -p 9090:9090 -v /opt/prometheus/prometheus.yml:/etc/pro…

制造业装备虚拟3D云展馆开发提升企业营销效果

随着元宇宙时代的到来&#xff0c;商城的运营模式也在发生深刻变革。在这一大背景下&#xff0c;元宇宙商城更加注重场景营造和商品的线上互动体验。3D技术的迅猛发展&#xff0c;为电商行业带来了全新的展示、体验与服务模式&#xff0c;电商3D化已成为不可阻挡的潮流。 华锐3…

【JVM】调优工具

这里简单介绍一下各种调优用到的工具 一&#xff0c;环境准备 首先我们需要准备好Java环境&#xff0c;和win上的jdk环境&#xff08;图形化界面如jconsole只有jdk中有&#xff09;。 有这样一个类Prolem&#xff0c;每个线程都会带来100个垃圾对象&#xff0c;线程new完100…

【以规划为导向的自动驾驶】Planning-oriented Autonomous Driving

ABSTRACT 研究背景&#xff1a; 现代自动驾驶系统是顺序化地排列多个任务模块, 近期的主流方法&#xff1a; ①为单个任务部署独立模型 ②设计具有分离式头部的多任务(multi-task)范式。 但是&#xff0c;这些方法会累积误差或任务间协同不足而不利于自动驾驶。 作者认为重…

HTML常用标签-列表标签

列表标签 有序列表 分条列项展示数据的标签, 其每一项前面的符号带有顺序特征 无序列表 分条列项展示数据的标签, 其每一项前面的符号不带有顺序特征 有序列表标签 ol无序列表标签 ul列表项标签 li代码 <!-- 有序列表 --><ol><li>JAVA</li><li>前…

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

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

【重生之我在学Android】WorkManager (章一)

相关文章 【重生之我在学Android原生】ContentProvider(Java) 【重生之我在学Android原生】Media3 【重生之我在学Android】WorkManager &#xff08;章一&#xff09; 前言 官方文档 官方推荐 - 前台服务、后台服务都可以使用WorkManger来实现 案例 语言&#xff1a;JA…

外贸营销脚本,自动化营销工具的制作!

在当今全球化的商业环境下&#xff0c;外贸行业面临着日益激烈的竞争&#xff0c;为了提高营销效率、降低成本并增加销售额&#xff0c;许多外贸企业开始寻求自动化营销的解决方案。 本文将深入探讨外贸自动化营销脚本与工具的制作方法&#xff0c;并分享五段实用的源代码&…

ros大车学习2024.3.28-2024.5.14小结(1)

ros一键安装推荐wget http://fishros.com/install -O fishros && . fishros (原本的资料的是melodic的&#xff0c;因为资料里面的镜像是ubuntu18.04的&#xff0c;而我用的是鲁班猫sk3566,ubuntu20.04&#xff0c;镜像来源于野火官网)首先获取新noetic源码2024.5.13从…

抖音小店的个人店和个体店有什么区别?限制不同,新手必须了解!

大家好&#xff0c;我是电商月月 我们做抖音小店入驻时会有三个选择&#xff0c;分别为&#xff1a;企业入驻&#xff0c;个体工商户入驻&#xff0c;个人身份证入驻 其中企业店是给厂家&#xff0c;公司建立的选项 那个人店和个体店呢&#xff0c;普通人做店要选择哪种呢&a…

[XYCTF新生赛]-PWN:baby_gift解析(函数调用前需清空eax)

查看保护 查看ida 这里有一处栈溢出&#xff0c;并且从汇编上看&#xff0c;程序将rbp0x20处设置为了rdi&#xff0c;让我们可以控制rdi的值。而程序没有可利用的pop。 完整exp&#xff1a; from pwn import* pprocess(./babygift) premote(gz.imxbt.cn,20833) printf_plt0x4…

优雅谈论大模型7:重新审视神经网络

这个专栏围绕着大模型的基本知识点深入浅出&#xff0c;章节之间的联系较为紧密。若在某个环节出现卡点&#xff0c;可以回到如何优雅的谈论大模型重新阅读。而斯坦福2024人工智能报告解读则为通识性读物。若对于如果构建生成级别的AI架构则可以关注AI架构设计专栏。技术宅麻烦…