首页 > 编程语言 >Java 枚举(超详细讲解)

Java 枚举(超详细讲解)

时间:2024-03-23 22:58:04浏览次数:36  
标签:Week Java System 索引 枚举 讲解 println out

Java语言的强大之处在于它提供了多种多样的类库,从而大大提高了程序的编程效率和质量。

一、枚举

事先考虑到某一变量可能的取值,尽可能用自然语言忠表意清楚的单词来表示它的每一个值,用这中思路定义的类型被称为枚举类型。
枚举事由一组固定的常量组成的类型。在Java中每个枚举都继承java.lang.Enum类,使用关键字enum定义。

语法格式:

访问修饰符 enum 枚举名{
	常量1[,常量2……[ ; ]]
	//[其他成员]
}
  1. 在枚举中可以定义多个常量,表示不同的枚举值,即枚举元素,之间用逗号隔开。
  2. 在枚举中可以定义其他成员,包括构造方法等,置于枚举常量之后。
  3. 可以使用“枚举名.常量名”的形式取出枚举中的指定内容。

代码示例:

public enum Gender{
	Male,Female;
}

在以上代码中,Gender中自定义的枚举类型里包含Male、Female两个数据。
在Java中,通常使用枚举表示一组有限的值,实现对输入的值进行约束。下面通过示例学习在程序中如何定义和使用枚举。

代码示例:

public enum Week {
    MON,TUE,WED,THU,FRI,SAT,SUN;
}
public class WeekTest {
    public void doWhat(Week day) {
        switch (day) {
            case MON:
            case TUE:
            case WED:
            case THU:
            case FRI:
                System.out.println("工作日,努力写代码!");
                break;
            case SAT:
                System.out.println("星期六,休息!看电影!");
                break;
            case SUN:
                System.out.println("星期日,休息!打篮球!");
                break;
            default:
                System.out.println("地球上一个星期就7天。");
        }
    }

    public static void main(String[] args) {
        WeekTest t=new WeekTest();
        t.doWhat(Week.THU);
        Week sat=Week.SAT;
        t.doWhat(sat);

        for (Week w:Week.values()){
            t.doWhat(w);
        }
    }
}

运行结果:
在这里插入图片描述
在上面代码中,Week.values()表示取得枚举中全部内容,返回一个对象数组,这是枚举本身支持的一个方法。除此之外,关于Enum类的其他用法,此处不深入讲解,以后用到可自行查看API帮助文档

注意:

  1. 在switch结构中可以使用枚举类型作为判断变量,此时需注意,case关键字后一定不能在枚举值前加枚举类型名,如Week.THU,否则会出现编译错误。
    2.enum关键字表示的是java.lang.Enum类型,即使用enum声明的枚举类型,就相当于定义一个类,此类默认继承java.lang.Enum类,因此可使用其中定义的所有方法。

二、枚举的方法

方法描述
T[] values()以数组形式返回枚举类型的所有成员
T valueOf()将普通字符串转换为枚举实例
int compareTo()比较两个枚举成员在定义时的顺序,结果为负整数、零或正整数,表示当前对象小于、等于或大于指定对象
int ordinal()获取枚举成员的索引位置

代码示例:

public enum Week {
    MON,TUE,WED,THU,FRI,SAT,SUN;
}

public class EnumTest {
    public static void main(String[] args) {
        //遍历枚举
        System.out.println("****foreach遍历枚举元素****");
        for (Week w:Week.values()){
            System.out.println(w);
        }
        System.out.println("****获取枚举的个数****");
        System.out.println("一周有"+Week.values().length+"天");
        System.out.println("****使用索引遍历枚举元素****");
        for (int i = 0; i < Week.values().length; i++) {
            System.out.println("索引"+Week.values()[i].ordinal()+"值:"+Week.values()[i]+"。");
        }
        System.out.println("****枚举元素比较****");
        //字符串转换为枚举再进行比较
        System.out.println((Week.valueOf("MON")).equals(Week.MON));
        System.out.println(Week.FRI.compareTo(Week.TUE));
    }
}

运行结果:

****foreach遍历枚举元素****
MON
TUE
WED
THU
FRI
SAT
SUN
****获取枚举的个数****
一周有7天
****使用索引遍历枚举元素****
索引0值:MON。
索引1值:TUE。
索引2值:WED。
索引3值:THU。
索引4值:FRI。
索引5值:SAT。
索引6值:SUN。
****枚举元素比较****
true
3

从上面示例中可看出,枚举具有类似数组的特征,每个枚举元素都默认有一个对应的索引值,表示枚举元素的位置,初始值从0开始,能够通过索引访问枚举元素。同时,通过调用枚举类中的方法可以实现 更多样化的数据操作,大大提高了编码效率,避免错误发生,简化代码。

标签:Week,Java,System,索引,枚举,讲解,println,out
From: https://blog.csdn.net/AE_BD/article/details/136973496

相关文章

  • C语言for循环详细讲解
    引言:在上一篇博客中,我们介绍了关于C语言的一种循环,while循环,并介绍了其中的关键字及其例题,在本片帖子,我们将引入一种新的循环方式,名为for循环,那么它与while循环又有哪些相似之处和不同之处呢?让我们一起来探索一下。一.for循环的基本架构for循环时三种循环中使用最多的for循......
  • Java面试题:用Java并发工具类,实现一个线程安全的单例模式;使用Java并发工具包和并发框架
    面试题一:设计一个Java并发工具类,实现一个线程安全的单例模式,并说明其工作原理。题目描述:请设计一个Java并发工具类,实现一个线程安全的单例模式。要求使用Java内存模型、原子操作、以及Java并发工具包中的相关工具。考察重点:对Java内存模型的理解。对Java并发工具包的了......
  • JAVA面向对象高级三:内部类概述,成员内部类,静态内部类
            静态内部类:     局部内部类: ......
  • 基于java+springboot+vue实现的游戏账号估价交易平台(文末源码+Lw+ppt)23-555
    摘 要系统根据现有的管理模块进行开发和扩展,采用面向对象的开发的思想和结构化的开发方法对游戏账号估价交易的现状进行系统调查。采用结构化的分析设计,该方法要求结合一定的图表,在模块化的基础上进行系统的开发工作。在设计中采用“自下而上”的思想,在游戏账号估价交易平台......
  • 基于java+springboot+vue实现的外卖平台系统(文末源码+Lw+ppt)23-568
    摘 要伴随着我国社会的发展,人民生活质量日益提高。于是对外卖平台系统进行规范而严格是十分有必要的,所以许许多多的信息管理系统应运而生。此时单靠人力应对这些事务就显得有些力不从心了。所以本论文将设计一套外卖平台系统,帮助商家进行菜品分类、菜品信息、订单等繁琐又重......
  • 基于java+springboot+vue实现的游戏账号估价交易平台(文末源码+Lw+ppt)23-555
    摘 要系统根据现有的管理模块进行开发和扩展,采用面向对象的开发的思想和结构化的开发方法对游戏账号估价交易的现状进行系统调查。采用结构化的分析设计,该方法要求结合一定的图表,在模块化的基础上进行系统的开发工作。在设计中采用“自下而上”的思想,在游戏账号估价交易平台......
  • 基于java+springboot+vue实现的外卖平台系统(文末源码+Lw+ppt)23-568
     摘 要伴随着我国社会的发展,人民生活质量日益提高。于是对外卖平台系统进行规范而严格是十分有必要的,所以许许多多的信息管理系统应运而生。此时单靠人力应对这些事务就显得有些力不从心了。所以本论文将设计一套外卖平台系统,帮助商家进行菜品分类、菜品信息、订单等繁琐又......
  • 基于java+springboot+vue实现的健身房管理系统(文末源码+Lw+ppt)23-523
    摘 要健身房管理的以往工作流程繁杂、多样、管理复杂与设备维护繁琐。而如今计算机已完全能够胜任健身房管理工作,而且更加准确、方便、快捷、高效、清晰、透明,它完全可以克服以上所述的不足之处。这将给查询信息和管理带来很大的方便,从而给健身房管理者带来更高的效率,这也是......
  • 配置vscode运行Java与更好的编写markdown文档
    下载vscode官网选择下载版本,根据自己的需求选择,蓝色的stable版本是非常稳定的发行版本,绿色的insiders版本是测试版,可能会有一点小bug安装完成以后第一步当然是让我们的vscode变成中文需要安装以下插件插件名称:Chinese(Simplified)(简体中文)LanguagePackforVisua......
  • 【附源码】java税源管理系统(ssm毕业设计+maven+vue+计算机专业)
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:在当代社会,税收作为政府财政收入的主要来源之一,对于国家的经济稳定和社会发展具有举足轻重的作用。随着经济全球化以及信息技术的飞速发展,税源管理的复杂......