详细介绍java中的枚举类型
- 格式:doc
- 大小:53.00 KB
- 文档页数:4
java枚举类型enum用法switch-概述说明以及解释1.引言1.1 概述在计算机编程中,枚举类型(enum)是一种特殊的数据类型,用于表示一组具名的常量。
与普通的变量不同,枚举类型的取值是有限且固定的,它将一系列具有相似属性或关联关系的常量进行分组,方便在程序中进行使用和管理。
在Java编程语言中,枚举类型是一种独立的类,它可以包含多个枚举常量,并且允许定义属性和方法。
枚举类型的定义方式简单明了,可以帮助程序员更好地组织和管理常量。
本文将重点介绍Java中枚举类型enum的用法,并阐述枚举类型在switch语句中的应用。
首先,我们将讨论枚举类型的定义和声明,包括如何创建枚举类型以及如何给枚举常量赋值。
接着,我们将探讨枚举类型的属性和方法,包括如何为枚举常量定义属性和方法,以及如何在程序中使用它们。
最后,我们将重点关注枚举类型在switch语句中的应用,介绍如何使用switch语句处理枚举类型的不同取值。
通过本文的学习,读者将能够更好地掌握枚举类型enum的用法,进一步提升自己的编程能力。
接下来,我们将详细介绍枚举类型的定义和声明。
1.2 文章结构本文将按照以下结构来探讨Java枚举类型(enum)以及其在switch 语句中的应用。
1. 引言1.1 概述在引言部分,我们将简要介绍Java枚举类型(enum)的基本概念和作用,以及本文的目的和重要性。
1.2 文章结构(当前部分)在文章结构部分,我们将详细介绍本文的整体结构,让读者对接下来的内容有一个清晰的认知。
1.3 目的在目的部分,我们将阐述本文的目标是为读者提供全面了解Java 枚举类型(enum)及其在switch语句中应用的知识,以帮助读者在实际开发中更好地运用这些概念。
2. 正文在这一节中,我们将介绍如何定义和声明枚举类型,以及枚举类型的特点和用法。
2.2 枚举类型的属性和方法这一节将介绍枚举类型可以拥有属性和方法,以及如何使用这些属性和方法来对枚举类型进行操作和使用。
详细介绍java中的枚举类型枚举其实就是一种类型,跟int, char 这种差不多,就是定义变量时限制输入的,你只能够赋enum 里面规定的值。
枚举类型是JDK5.0的新特征。
Sun引进了一个全新的关键字enum来定义一个枚举类。
下面就是一个典型枚举类型的定义:Java代码:public enum Color{RED,BLUE,BLACK,YELLOW,GREEN}显然,enum很像特殊的class,实际上enum声明定义的类型就是一个类。
而这些类都是类库中Enum 类的子类(ng.Enum)。
它们继承了这个Enum中的许多有用的方法。
我们对代码编译之后发现,编译器将enum类型单独编译成了一个字节码文件:Color.class。
Color字节码代码final enum hr.test.Color {// 所有的枚举值都是类静态常量public static final enum hr.test.Color RED;public static final enum hr.test.Color BLUE;public static final enum hr.test.Color BLACK;public static final enum hr.test.Color YELLOW;public static final enum hr.test.Color GREEN;private static final synthetic hr.test.Color[] ENUM$VALUES;// 初始化过程,对枚举类的所有枚举值对象进行第一次初始化static {0new hr.test.Color [1]3 dup4 ldc [16]//把枚举值字符串“RED”压入操作数栈6 iconst_0 // 把整型值0压入操作数栈7 invokespecial hr.test.Color(ng.String,int)[17]//调用Color类的私有构造器创建Color对象RED10 putstatic hr.test.Color.RED : hr.test.Color [21]//将枚举对象赋给Color的静态常量RED。
Java枚举(enum)详解Java 枚举知识点概念enum的全称为 enumeration,是 JDK 1.5 中引⼊的新特性。
在Java中,被enum关键字修饰的类型就是枚举类型。
形式如下:enum Color { RED, GREEN, BLUE }如果枚举不添加任何⽅法,枚举值默认为从0开始的有序数值。
以 Color 枚举类型举例,它的枚举常量依次为RED:0,GREEN:1,BLUE:2。
枚举的好处:可以将常量组织起来,统⼀进⾏管理。
枚举的典型应⽤场景:错误码、状态机等。
枚举类型的本质尽管enum看起来像是⼀种新的数据类型,事实上,enum是⼀种受限制的类,并且具有⾃⼰的⽅法。
创建enum时,编译器会为你⽣成⼀个相关的类,这个类继承⾃ng.Enum。
ng.Enum类声明public abstract class Enum<E extends Enum<E>>implements Comparable<E>, Serializable { ... }枚举的⽅法在enum中,提供了⼀些基本⽅法:values():返回 enum 实例的数组,⽽且该数组中的元素严格保持在 enum 中声明时的顺序。
name():返回实例名。
ordinal():返回实例声明时的次序,从0开始。
getDeclaringClass():返回实例所属的 enum 类型。
equals():判断是否为同⼀个对象。
可以使⽤==来⽐较enum实例。
此外,ng.Enum实现了Comparable和Serializable接⼝,所以也提供compareTo()⽅法。
例:展⽰enum的基本⽅法public class EnumMethodDemo {enum Color {RED, GREEN, BLUE;}enum Size {BIG, MIDDLE, SMALL;}public static void main(String args[]) {System.out.println("=========== Print all Color ===========");for (Color c : Color.values()) {System.out.println(c + " ordinal: " + c.ordinal());}System.out.println("=========== Print all Size ===========");for (Size s : Size.values()) {System.out.println(s + " ordinal: " + s.ordinal());}Color green = Color.GREEN;System.out.println(<span class="hljs-string">"green name(): "</span> + ());System.out.println(<span class="hljs-string">"green getDeclaringClass(): "</span> + green.getDeclaringClass());System.out.println(<span class="hljs-string">"green hashCode(): "</span> + green.hashCode());System.out.println(<span class="hljs-string">"green compareTo Color.GREEN: "</span> + pareTo(Color.GREEN));System.out.println(<span class="hljs-string">"green equals Color.GREEN: "</span> + green.equals(Color.GREEN));System.out.println(<span class="hljs-string">"green equals Size.MIDDLE: "</span> + green.equals(Size.MIDDLE));System.out.println(<span class="hljs-string">"green equals 1: "</span> + green.equals(<span class="hljs-number">1</span>));System.out.format(<span class="hljs-string">"green == Color.BLUE: %b\n"</span>, green == Color.BLUE);}输出=========== Print all Color ===========RED ordinal: 0GREEN ordinal: 1BLUE ordinal: 2=========== Print all Size ===========BIG ordinal: 0MIDDLE ordinal: 1SMALL ordinal: 2green name(): GREENgreen getDeclaringClass(): class org.zp.javase.enumeration.EnumDemo$Colorgreen hashCode(): 460141958green compareTo Color.GREEN: 0green equals Color.GREEN: truegreen equals Size.MIDDLE: falsegreen equals 1: falsegreen == Color.BLUE: false枚举的特性枚举的特性,归结起来就是⼀句话:除了不能继承,基本上可以将enum看做⼀个常规的类。
全面掌握java枚举类型(enum type)1背景在java语言中还没有引入枚举类型之前,表示枚举类型的常用模式是声明一组具有int常量。
之前我们通常利用public final static 方法定义的代码如下,分别用1 表示春天,2表示夏天,3表示秋天,4表示冬天。
public class Season {public static final int SPRING = 1;public static final int SUMMER = 2;public static final int AUTUMN = 3;public static final int WINTER = 4;}这种方法称作int枚举模式。
可这种模式有什么问题呢,我们都用了那么久了,应该没问题的。
通常我们写出来的代码都会考虑它的安全性、易用性和可读性。
首先我们来考虑一下它的类型安全性。
当然这种模式不是类型安全的。
比如说我们设计一个函数,要求传入春夏秋冬的某个值。
但是使用int类型,我们无法保证传入的值为合法。
代码如下所示:private String getChineseSeason(int season){StringBuffer result = new StringBuffer();switch(season){case Season.SPRING :result.append("春天");break;case Season.SUMMER :result.append("夏天");break;case Season.AUTUMN :result.append("秋天");break;case Season.WINTER :result.append("冬天");break;default :result.append("地球没有的季节");break;}return result.toString();}public void doSomething(){System.out.println(this.getChineseSeason(Season.SPR ING));//这是正常的场景System.out.println(this.getChineseSeason(5));//这个却是不正常的场景,这就导致了类型不安全问题}程序getChineseSeason(Season.SPRING)是我们预期的使用方法。
java基础篇---枚举详解在JDK1.5之前,JAVA可以有两种⽅式定义新类型:类和接⼝,对于⼤部分⾯向对象编程,有这两种似乎就⾜够了,但是在⼀些特殊情况就不合适。
例如:想要定义⼀个Color类,它只能有Red,Green,Blue三种,其他值则是错误,在JDK1.5之后便引⼊枚举类型。
枚举其实就是⼀种类型,跟int, char 这种差不多,就是定义变量时限制输⼊的,你只能够赋enum⾥⾯规定的值。
public enum Color{RED,GREEN,BLUE ; // 定义三个枚举的类型};枚举中有三个取值,以后再取的时候,只能从这三个内容取public class GetEnumContent{public static void main(String args[]){Color c = Color.BLUE ; // 取出蓝⾊System.out.println(c) ;}};可以直接使⽤在Switch语句上public class SwitchPrintEnum{public static void main(String args[]){for(Color c:Color.values()){ // 输出枚举中的全部内容print(c) ;}}public static void print(Color color){switch(color){case RED:{System.out.println("红颜⾊") ;break ;}case GREEN:{System.out.println("绿颜⾊") ;break ;}case BLUE:{System.out.println("蓝颜⾊") ;break ;}default:{System.out.println("未知颜⾊") ;break ;}}}};使⽤enum关键字可以定义⼀个枚举,也可以定义⼀个Eunm类枚举类的操作⽅法:在枚举已经实现Comparable接⼝,所以在枚举中的内容可以排序。
Java枚举类Java 枚举类枚举是⼀个被命名的整型常数的集合,⽤于声明⼀组带标识符的常数。
枚举在⽈常⽣活中很常见,例如⼀个⼈的性别只能是“男”或者“⼥”,⼀周的星期只能是 7 天中的⼀个等。
类似这种当⼀个变量有⼏种固定可能的取值时,就可以将它定义为枚举类型。
在 JDK 1.5 之前没有枚举类型,那时候⼀般⽤接⼝常量来替代。
⽽使⽤ Java 枚举类型 enum 可以更贴近地表⽰这种常量。
声明枚举声明枚举时必须使⽤ enum 关键字,然后定义枚举的名称、可访问性、基础类型和成员等。
枚举声明的语法如下:enum-modifiers enum enumname:enum-base {enum-body,}其中,enum-modifiers 表⽰枚举的修饰符主要包括 public、private 和 internal;enumname 表⽰声明的枚举名称;enum-base 表⽰基础类型;enum-body 表⽰枚举的成员,它是枚举类型的命名常数。
任意两个枚举成员不能具有相同的名称,且它的常数值必须在该枚举的基础类型的范围之内,多个枚举成员之间使⽤逗号分隔。
提⽰:如果没有显式地声明基础类型的枚举,那么意味着它所对应的基础类型是 int。
例 1下⾯代码定义了⼀个表⽰性别的枚举类型 SexEnum 和⼀个表⽰颜⾊的枚举类型 Color。
public enum SexEnum {male,female;}public enum Color {RED,BLUE,GREEN,BLACK;}之后便可以通过枚举类型名直接引⽤常量,如 SexEnum.male、Color.RED。
使⽤枚举还可以使 switch 语句的可读性更强,例如以下⽰例代码:enum Signal {// 定义⼀个枚举类型GREEN,YELLOW,RED}public class TrafficLight {Signal color = Signal.RED;public void change() {switch(color) {case RED:color = Signal.GREEN;break;case YELLOW:color = Signal.RED;break;case GREEN:color = Signal.YELLOW;break;}}}枚举类Java 中的每⼀个枚举都继承⾃ ng.Enum 类。
JAVA之enum类详解⽬录⼀、简介1、枚举类代表⼀组常量;2、枚举常量隐性声明为final static类型;3、每⼀个枚举常量代表了⼀个枚举类的对象;4、枚举类隐性实现了parable接⼝和java.io.Serializable接⼝5、枚举类可以包涵多个构造函数⼆、默认枚举类枚举类⾸先定义常量,其次才是属性、构造函数和⽅法。
(注:常量名要⼤写)//创建默认枚举类public enum DefaultEnum {DEMOENUM1, DEMOENUM2, DEMOENUM3;}//访问枚举对象public class client {public static void main(String[] args) {DefaultEnum demoEnum = DefaultEnum.DEMOENUM1;System.out.println(demoEnum);//输出:DEMOENUM1}}三、多值枚举对象枚举对象可以包涵⼀个或多个值,值的类型可以任意基本类型。
枚举对象的值在枚举类中定义后可定义setter⽅法修改,但是如⾮必要不要这么做,因为这会违背枚举对象常量的本质。
//创建枚举类public enum MutiValueEnum {DEMOENUM1(1, "hello"),DEMOENUM2(2, "enum");//枚举对象的变量private int id;private String value;//重写枚举类的默认构造器MutiValueEnum(int id, String value) {this.id = id;this.value = value;}//获得id属性的值public int getId() { return this.id; }//获得value属性的值public String getValue() { return this.value; }}//访问枚举对象public class client {public static void main(String[] args) {MutiValueEnum mutiValueEnum = MutiValueEnum.DEMOENUM1;System.out.println(mutiValueEnum);//输出:DEMOENUM1System.out.println(mutiValueEnum.getId());//输出:1System.out.println(mutiValueEnum.getValue());//输出:hello}}四、属性和⽅法枚举类⾥的属性和⽅法是属于枚举常量的,所以枚举常量可以调⽤这些⽅法。
Java中的枚举类型 ⼀:枚举的引⼊ enum全称enumeration,是JDK1.5中引⼊的新特性,存放在ng包中。
下⾯就平时的学习和使⽤过程中⽤到的进⾏总结: 枚举(enum),是指⼀个经过排序的,被打包成⼀个单⼀实体的项列表。
⼀个枚举的实例可以使⽤枚举项列表中任意单⼀项的值。
枚举在各个语⾔当中都有着⼴泛的应⽤,通常⽤来表⽰颜⾊,⽅式,类别,状态等等数⽬有限,形式离散,表达⼜极为明确的量。
所以Java从JDK1.5之后,引⼊了对枚举的⽀持。
那么在枚举出现之前,如果想表⽰⼀组特定的离散值,往往使⽤⼀些常量。
例如: 当然,常量也不仅仅局限于int型,诸如char和String等也是不在少数。
然⽽,⽆论使⽤什么样的类型,这样做都有很多的坏处。
这些常量通常都是连续、有⽆穷多个值的量,⽽类似这种表⽰类别的量则是离散的,并且通常情况下只有有限个值。
⽤连续的量去表⽰离散量,会产⽣很多问题。
例如,针对上述的Entity类,如果要对Entity对象的type属性进⾏赋值,⼀般会采⽤如下⽅法: 这样做的缺点有:(1)代码可读性差、易⽤性低。
由于setType()⽅法的参数是int型的,在阅读代码的时候往往会让读者感到⼀头雾⽔,根本不明⽩这个2到底是什么意思,代表的是什么类型。
当然,要保证可读性,还有这样⼀个办法: ⽽这样的话,问题⼜来了。
这样做,客户端必须对这些常量去建⽴理解,才能了解如何去使⽤这个东西。
说⽩了,在调⽤的时候,如果⽤户不到Entity类中去看看,还真不知道这个参数应该怎么传、怎么调。
像是setType(2)这种⽤法也是在所难免,因为它完全合法,不是每个⼈都能够建⽴起⽤常量名代替数值,从⽽增加程序可读性、降低耦合性的意识。
(2)类型不安全。
在⽤户去调⽤的时候,必须保证类型完全⼀致,同时取值范围也要正确。
像是setType(-1)这样的调⽤是合法的,但它并不合理,今后会为程序带来种种问题。
也许你会说,加⼀个有效性验证嘛,但是,这样做的话,⼜会引出下⾯的第(3)个问题。
java中的枚举类型Java中的枚举类型在Java编程语言中,枚举类型是一种特殊的数据类型,它允许程序员定义一组命名的常量。
枚举类型在许多实际应用中都非常有用,可以用于表示有限的、预定义的一组值。
本文将介绍Java中的枚举类型,并探讨它们的使用场景和优势。
一、枚举类型的定义和基本语法在Java中,我们可以使用关键字"enum"来定义一个枚举类型。
枚举类型可以包含零个或多个枚举常量,每个枚举常量都是该枚举类型的一个实例。
以下是定义一个简单枚举类型的基本语法:```enum Season {SPRING, SUMMER, AUTUMN, WINTER}```上述代码定义了一个名为"Season"的枚举类型,它包含了四个枚举常量:SPRING、SUMMER、AUTUMN和WINTER。
这些枚举常量都是Season类型的实例。
二、枚举类型的特性和优势1. 枚举类型是类型安全的:枚举类型在编译时会进行类型检查,可以防止程序员在使用枚举常量时出现错误。
2. 枚举类型是有限的:枚举类型只能取预定义的值,这些值在枚举类型的定义中显式列出。
这样可以避免程序员输入错误的值。
3. 枚举类型可以拥有方法:枚举类型可以定义自己的方法,这些方法可以在枚举常量上进行调用。
这使得枚举类型可以具有更多的行为和功能。
4. 枚举类型可以实现接口:枚举类型可以实现一个或多个接口,从而使枚举常量具有接口定义的行为。
三、枚举类型的使用场景枚举类型在很多场景下都非常有用,下面列举几个常见的使用场景:1. 表示有限的选项:如果一个变量只能取几个预定义的值,那么可以使用枚举类型来表示这些选项。
例如,性别可以表示为一个枚举类型,其中包含男、女和未知等选项。
2. 替代常量:通常情况下,我们使用常量来表示一些特定的值。
但是,使用枚举类型可以使代码更加清晰和可读。
例如,使用枚举类型来表示颜色,可以避免使用数字或字符串来表示颜色值。
java枚举类型enum的描述Java枚举类型(enum)是一种特殊的数据类型,它是一组预定义的常量的集合。
在Java中,枚举类型被用来表示一组有限的取值范围。
枚举类型提供了一种更加优雅和类型安全的方式来定义常量,它可以在代码中更好地表达和理解某些特定的取值。
在Java中,使用关键字"enum"来定义枚举类型。
枚举类型的定义可以像类一样,可以包含字段、方法和构造函数。
枚举类型的字段是该类型的实例对象,因此每个字段都是唯一的。
枚举类型的定义通常如下所示:```public enum EnumName {ENUM_VALUE1,ENUM_VALUE2,ENUM_VALUE3,...}```其中,"EnumName"是枚举类型的名称,"ENUM_VALUE1"、"ENUM_VALUE2"等是枚举类型的字段。
在定义枚举类型时,可以在枚举字段后面添加逗号和分号,也可以省略。
枚举类型的字段可以添加其他属性,例如字段的值、描述等。
可以通过构造函数来为字段设置这些属性。
枚举类型的构造函数只能是私有的,因为枚举类型的字段是其实例对象,不希望外部代码直接创建新的实例对象。
枚举类型的字段可以通过枚举类型的名称和字段名称来访问。
例如,对于上面的枚举类型,可以通过"EnumName.ENUM_VALUE1"的方式来访问字段。
枚举类型还可以包含方法。
可以为枚举类型定义普通方法和抽象方法。
普通方法可以在枚举类型的每个字段上调用,抽象方法则需要在每个字段中进行实现。
枚举类型的方法可以通过"."运算符来调用。
例如,对于上面的枚举类型,可以通过"EnumName.ENUM_VALUE1.method()"的方式来调用方法。
枚举类型还可以实现接口,从而为枚举类型添加一些共同的行为。
实现接口后,枚举类型需要实现接口中的所有方法。
enum的用法java摘要:一、枚举的定义与作用1.定义2.作用二、枚举的语法与使用1.语法2.使用示例三、枚举与整数的转换1.自动转换2.手动转换四、枚举的高级特性1.枚举常量2.枚举实例正文:枚举(Enum)是Java 中一种特殊的类型,用于表示一组固定的常量。
它主要具有以下几个方面的作用:1.定义:枚举是一种用于定义常量的工具,它可以将一组整数或字符串等常量进行封装,方便程序员使用。
2.作用:枚举可以提高代码的可读性和可维护性,使程序员更容易理解和把握程序的运行状态。
同时,枚举还可以提高程序的安全性,防止程序中出现非法的整数值。
在Java 中,枚举的语法格式如下:```javapublic enum 枚举名{枚举常量1,枚举常量2,...}```使用示例:```javapublic enum Day {MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY}```在Java 中,枚举与整数之间可以进行自动转换。
当程序需要将枚举值转换为整数时,Java 会自动将枚举实例的hashCode() 值转换为整数。
同样,如果程序需要将整数转换为枚举值,Java 也会自动查找与整数对应的枚举实例。
除了自动转换外,Java 还提供了手动转换的方法。
通过调用枚举类的静态方法valueOf(),程序员可以将整数转换为枚举实例,如下所示:```javaDay day = Day.valueOf(1); // 相当于Day.MONDAY```枚举还具有一些高级特性,如枚举常量和枚举实例。
枚举常量是枚举中的静态变量,它可以在不创建枚举实例的情况下直接使用。
枚举实例是枚举类的实例,它可以通过new 关键字创建。
java enum深入讲解一、什么是Java枚举类型Java枚举类型是一种特殊的数据类型,它允许我们定义一个有限个数的常量,并将这些常量作为一个独立的数据类型来使用。
Java枚举类型在JDK1.5中被引入,它可以用来代替传统的int或String等基本数据类型。
二、Java枚举类型的定义方式Java枚举类型的定义方式非常简单,只需要使用关键字enum即可。
例如:```public enum Color {RED, GREEN, BLUE;}```上面这个例子定义了一个名为Color的枚举类型,它包含了三个常量:RED、GREEN和BLUE。
这些常量都是Color类型的实例。
三、Java枚举类型的特点1. Java枚举类型是一种特殊的类,因此它可以拥有属性和方法。
2. Java枚举类型中定义的常量都是该类的实例,并且只能通过该类访问。
3. Java枚举类型中定义的常量不能被修改。
4. Java枚举类型中可以使用switch语句进行匹配。
5. Java枚举类型可以实现接口。
四、Java枚举类型中常用方法1. values()方法:返回该枚举类中所有常量值组成的数组。
2. valueOf()方法:根据给定字符串返回对应的枚举常量。
3. name()方法:返回该枚举常量的名称。
4. ordinal()方法:返回该枚举常量在枚举类中的索引位置。
五、Java枚举类型中的构造函数Java枚举类型中的构造函数默认为私有,因此不能被外部调用。
如果需要给每个枚举常量设置属性值,则可以使用带参构造函数。
例如:```public enum Color {RED("红色"), GREEN("绿色"), BLUE("蓝色");private String desc;private Color(String desc) {this.desc = desc;}public String getDesc() {return desc;}}```上面这个例子中,我们给每个枚举常量都设置了一个描述信息,并提供了一个getDesc()方法来获取该描述信息。
三分钟快速掌握Java中枚举(enum)什么是枚举?枚举是JDK5引⼊的新特性。
在某些情况下,⼀个类的对象是固定的,就可以定义为枚举。
在实际使⽤中,枚举类型也可以作为⼀种规范,保障程序参数安全。
枚举有以下特点:1. Java中枚举和类、接⼝的级别相同。
2. 枚举和类⼀样,都有⾃⼰的属性、⽅法、构造⽅法,不同点是:枚举的构造⽅法只能是private修饰,也就⽆法从外部构造对象。
构造⽅法只在构造枚举值时调⽤。
3. 使⽤enum关键字声明⼀个枚举类型时,就默认继承⾃Java中的 ng.Enum类,并实现了ng.Seriablizable和parable两个接⼝。
4. 所有的枚举值都是 public static final 的,且⾮抽象的枚举类不能再派⽣⼦类。
5. 枚举类的所有实例(枚举值)必须在枚举类的第⼀⾏显式地列出,否则这个枚举类将永远不能产⽣实例。
6. 判断枚举是否相同时,使⽤ == 和 equals 是⼀样的。
下⾯是ng.Enum类中的equals():// 这⾥是final修饰的,不允许⼦类重写public final boolean equals(Object other) {return this==other;}枚举的常⽤⽅法int compareTo(E o)⽐较此枚举与指定对象的顺序。
在该对象⼩于、等于或⼤于指定对象时,分别返回负整数、零或正整数。
枚举常量只能与相同枚举类型的其他枚举常量进⾏⽐较。
// Enum 中的源码public final int compareTo(E o) {Enum other = (Enum)o;Enum self = this;if (self.getClass() != other.getClass() && // optimizationself.getDeclaringClass() != other.getDeclaringClass())throw new ClassCastException();return self.ordinal - other.ordinal;}String name()返回此枚举实例的名称。
java枚举详解Java中的枚举类型是一种特殊的数据类型,它允许我们定义一个有限的、固定的值集合。
在Java 5中,引入了枚举类型,这使得Java程序的可读性和可维护性得到了很大的提高。
本文将详细介绍Java枚举类型的定义、使用、方法和实例。
一、枚举类型的定义在Java中,枚举类型是一种特殊的类,它的定义格式如下: ```javapublic enum EnumName {VALUE1, VALUE2, …, VALUEN;}```其中,`EnumName`是枚举类型的名称,`VALUE1, VALUE2, …, VALUEN`是枚举值。
枚举值是一个常量,它们必须是大写字母形式的标识符。
例如,我们可以定义一个颜色枚举类型,如下所示:```javapublic enum Color {RED, GREEN, BLUE;}```这里,我们定义了一个名为`Color`的枚举类型,它包含了三个枚举值:`RED`、`GREEN`和`BLUE`。
二、枚举类型的使用在Java中,我们可以使用枚举类型来定义变量、方法和构造函数。
下面分别介绍这三种用法。
1. 定义变量我们可以使用枚举类型来定义变量,如下所示:```javaColor c = Color.RED;```这里,我们定义了一个名为`c`的变量,它的类型是`Color`,并将它的值设置为`Color.RED`。
2. 定义方法我们也可以使用枚举类型来定义方法,如下所示:```javapublic enum Color {RED, GREEN, BLUE;public static Color fromString(String color) {if (color != null) {switch (color.toLowerCase()) {case 'red':return RED;case 'green':return GREEN;case 'blue':return BLUE;}}return null;}}```这里,我们定义了一个名为`fromString`的静态方法,它接受一个字符串参数`color`,并返回对应的`Color`枚举值。
java枚举解释-回复Java枚举解释枚举(Enum)是一种特殊的数据类型,用于定义一组有限的常量。
在Java 中,枚举类型提供了一种更加规范和安全的方式来定义常量,避免了常量散乱分布和类型安全的问题。
本文将以枚举的基本概念、枚举的定义、枚举的方法和使用场景为主题,一步一步详细解释Java枚举。
1. 枚举的基本概念枚举是一种可以定义一组有限的常量的特殊数据类型。
它的基本概念包括以下几点:1.1 常量集合:枚举中定义了一组常量,这些常量是该枚举类型的唯一实例。
常量的个数是有限的且固定的。
1.2 类型安全:枚举类型在编译时会进行类型检查,保证常量的类型正确。
1.3 可以定义成员变量和方法:枚举类型可以定义成员变量和方法,给每个常量添加特定的行为。
2. 枚举的定义在Java中,可以通过使用关键字`enum`来定义一个枚举类型。
枚举的定义通常包括枚举名、常量和可选的成员变量和方法。
下面是一个简单的枚举示例:javaenum Day {MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY;}上面的代码定义了一个`Day`枚举类型,其中包含七个常量,分别表示一周中的每一天。
注意,枚举常量都是大写字母命名,并且用逗号分隔。
每个枚举常量都是该枚举类型的唯一实例。
3. 枚举的方法枚举类型可以定义成员变量和方法,使得每个常量都可以具有特定的行为。
枚举的方法可以用于获取常量的值,比较常量之间的顺序,以及执行其他具体的操作。
下面是一个示例,展示了如何在枚举中定义方法:javaenum Day {MONDAY("周一", 1),TUESDAY("周二", 2),WEDNESDAY("周三", 3),THURSDAY("周四", 4),FRIDAY("周五", 5),SATURDAY("周六", 6),SUNDAY("周日", 7);private String name;private int value;private Day(String name, int value) { = name;this.value = value;}public String getName() {return name;}public int getValue() {return value;}}在上面的代码中,每个枚举常量都有一个对应的名称和值,可以通过`getName`方法和`getValue`方法获取。
Java中枚举Enum的使⽤详解⼀:Enum 类型的介绍 枚举类型(Enumerated Type)很早就出现在编程语⾔中,它被⽤来将⼀组类似的值包含到⼀种类型当中。
⽽这种枚举类型的名称则会被定义成独⼀⽆⼆的类型描述符,在这⼀点上和常量的定义相似。
不过相⽐较常量类型,枚举类型可以为申明的变量提供更⼤的取值范围。
⼆:Enum 类型的特点在某些情况下,⼀个类的对象时有限且固定的,如季节类,它只有春夏秋冬4个对象这种实例有限且固定的类,在 Java 中被称为枚举类;在 Java 中使⽤ enum 关键字来定义枚举类,其地位与 class、interface 相同;枚举类是⼀种特殊的类,它和普通的类⼀样,有⾃⼰的成员变量、成员⽅法、构造器 (只能使⽤ private 访问修饰符,所以⽆法从外部调⽤构造器,构造器只在构造枚举值时被调⽤);⼀个 Java 源⽂件中最多只能有⼀个 public 类型的枚举类,且该 Java 源⽂件的名字也必须和该枚举类的类名相同,这点和类是相同的;使⽤ enum 定义的枚举类默认继承了 ng.Enum 类,并实现了 ng.Seriablizable 和 parable 两个接⼝;所有的枚举值都是 public static final 的,且⾮抽象的枚举类不能再派⽣⼦类;枚举类的所有实例(枚举值)必须在枚举类的第⼀⾏显式地列出,否则这个枚举类将永远不能产⽣实例。
列出这些实例(枚举值)时,系统会⾃动添加 public static final 修饰,⽆需程序员显式添加。
三:Enum 使⽤1package com.ljq.test;23/**4 * 枚举⽤法详解5 *6 * @author jiqinlin7 *8*/9public class TestEnum {10/**11 * 普通枚举12 *13 * @author jiqinlin14 *15*/16public enum ColorEnum {17 red, green, yellow, blue;18 }1920/**21 * 枚举像普通的类⼀样可以添加属性和⽅法,可以为它添加静态和⾮静态的属性或⽅法22 *23 * @author jiqinlin24 *25*/26public enum SeasonEnum {27//注:枚举写在最前⾯,否则编译出错28 spring, summer, autumn, winter;2930private final static String position = "test";3132public static SeasonEnum getSeason() {33if ("test".equals(position))34return spring;35else36return winter;37 }38 }3940/**41 * 性别42 *43 * 实现带有构造器的枚举44 *45 * @author jiqinlin46 *47*/48public enum Gender{49//通过括号赋值,⽽且必须带有⼀个参构造器和⼀个属性跟⽅法,否则编译出错50//赋值必须都赋值或都不赋值,不能⼀部分赋值⼀部分不赋值;如果不赋值则不能写构造器,赋值编译也出错51 MAN("MAN"), WOMEN("WOMEN");5253private final String value;5455//构造器默认也只能是private, 从⽽保证构造函数只能在内部使⽤56 Gender(String value) {57this.value = value;58 }5960public String getValue() {61return value;62 }63 }6465/**66 * 订单状态67 *68 * 实现带有抽象⽅法的枚举69 *70 * @author jiqinlin71 *72*/73public enum OrderState {74/** 已取消 */75 CANCEL {public String getName(){return "已取消";}},76/** 待审核 */77 WAITCONFIRM {public String getName(){return "待审核";}},78/** 等待付款 */79 WAITPAYMENT {public String getName(){return "等待付款";}},80/** 正在配货 */81 ADMEASUREPRODUCT {public String getName(){return "正在配货";}},82/** 等待发货 */83 WAITDELIVER {public String getName(){return "等待发货";}},84/** 已发货 */85 DELIVERED {public String getName(){return "已发货";}},86/** 已收货 */87 RECEIVED {public String getName(){return "已收货";}};8889public abstract String getName();90 }9192public static void main(String[] args) {93//枚举是⼀种类型,⽤于定义变量,以限制变量的赋值;赋值时通过“枚举名.值”取得枚举中的值 94 ColorEnum colorEnum = ColorEnum.blue;95switch (colorEnum) {96case red:97 System.out.println("color is red");98break;99case green:100 System.out.println("color is green");101break;102case yellow:103 System.out.println("color is yellow");104break;105case blue:106 System.out.println("color is blue");107break;108 }109110//遍历枚举111 System.out.println("遍历ColorEnum枚举中的值");112for(ColorEnum color : ColorEnum.values()){113 System.out.println(color);114 }115116//获取枚举的个数117 System.out.println("ColorEnum枚举中的值有"+ColorEnum.values().length+"个");118119//获取枚举的索引位置,默认从0开始120 System.out.println(ColorEnum.red.ordinal());//0121 System.out.println(ColorEnum.green.ordinal());//1122 System.out.println(ColorEnum.yellow.ordinal());//2123 System.out.println(ColorEnum.blue.ordinal());//3124125//枚举默认实现了parable接⼝126 System.out.println(pareTo(ColorEnum.green));//-1127128//--------------------------129 System.out.println("===========");130 System.err.println("季节为" + SeasonEnum.getSeason());131132133//--------------134 System.out.println("===========");135for(Gender gender : Gender.values()){136 System.out.println(gender.value);137 }138139//--------------140 System.out.println("===========");141for(OrderState order : OrderState.values()){142 System.out.println(order.getName());143 }144 }145146 }四:枚举集合的使⽤java.util.EnumSet和java.util.EnumMap是两个枚举集合。
Java枚举类型
Java 枚举:是其中一个一个比较特殊的类,它一般也就是一组常量
例如:春、夏、秋、冬;星期一、星期二、星期三……
像这种当一个变量有几种固定可能的取值时, 可以将它定义为枚举类型。
JDK1.5 版本之前的需要自定义枚举类.
JDK 1.5 之后新加了 enum 关键字来定义枚举类.
若变量只有一个固定对象,枚举可以作为一种单例模式的实现方式。
值得注意的是:枚举不可以实现继承但可以实现接口
枚举类型的常用方法:
在枚举类型中,可以添加构造方法,但是规定这个构造方法必须为private修饰符修饰。
也可以将方法放置在接口中,使枚举类型实现接口,然后使每个枚举类型实现接口中的方法。
使用枚举类型的优势:
枚举类型声明提供了一种方便用户定义程序中变量的方法,枚举出某个变量类型所有可能出现的值。
总结枚举类型,它具有以下特点:
(1)枚举类型方便安全。
(2)方便程序中的数据定义。
(3)使得程序与数据完美融合。
(4)运行效率高。
java enum类方法Java中的enum类是一种特殊类型的类,它是一组有限的命名常量集合,被称为枚举类型。
在Java中,枚举类型也被称为枚举。
枚举类在Java中是一种非常有用的类型,主要用于定义某个类具有的常量类型。
在Java中,枚举类型的定义和使用非常容易,它们提供了很多有用的方法来操作枚举类型对象和常量。
本文将介绍Java中的enum类以及其常用的方法。
1. 枚举类型的定义在Java中,可以使用enum关键字来定义枚举类型。
枚举类型定义的语法如下:enum enum_name {// 常量列表}其中,enum_name代表枚举类型的名称,常量列表是一组有限的命名常量集合。
例如,下面是一个定义星期枚举类型的例子:enum Day {SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY;}在这个例子中,定义了一个Day枚举类型,它包括了7个常量,分别表示星期日、星期一、星期二、星期三、星期四、星期五和星期六。
在Java中,枚举类型提供了很多有用的方法来操作枚举类型对象和常量。
下面是枚举类型的常用方法:2.1 values()方法values()方法用于获取枚举类型中所有的常量。
该方法返回一个包含所有常量的数组。
Day[] days = Day.values();valueOf()方法用于根据指定的名称获取枚举类型的常量。
该方法接收一个字符串参数,该参数为枚举类型的常量名称。
该方法会根据名称返回对应的枚举类型常量。
例如,可以使用Day枚举类型的valueOf()方法获取星期三的常量:2.3 compareTo()方法compareTo()方法用于比较两个枚举类型常量的顺序。
该方法接收另一个枚举类型常量作为参数,并返回一个整数值。
例如,可以使用Day枚举类型的compareTo()方法比较星期一和星期二Constants的顺序:int compareResult = pareTo(Day.TUESDAY);compareResult的值为-1,表示星期一在星期二之前。
java中的枚举类型为什么要⽤枚举类型?boolean只会返回true和false两种情况。
但是在以后的开发中,有可能遇到⼀个⽅法的执⾏结果可能包括三种情况、四种情况、五种情况不等,但是每⼀个都是可以数清楚的,⼀枚⼀枚都是可以列举出来的。
这个布尔类型就⽆法满⾜需求了。
此时需要使⽤java语⾔中的枚举类型。
枚举类型的使⽤1、枚举:⼀枚⼀枚可以列举出来的,才建议使⽤枚举类型。
2、枚举编译之后也是⽣成class⽂件,枚举也是⼀种引⽤数据类型。
枚举中的每⼀个值可以看做是常量。
3、代码⽰例:public class Demo{public static void main(String[] args) {Result r = divide(10,0);System.out.println(r == Result.SUCCESS? "计算成功" : "计算失败");}public static Result divide(int a, int b){try {int c = a / b;return Result.SUCCESS;}catch (Exception e){return Result.FAIL;}}}enum Result{/*SUCCESS是枚举Result类型中的⼀个值,* FAIL是枚举Result类型中的⼀个值。
* 枚举中的每⼀个值,可以看做是“常量”*/SUCCESS, FAIL}输出:4、总结:①枚举是⼀种引⽤数据类型②枚举类型怎么定义,语法是?enum 枚举类型名{枚举值1,枚举值2}③结果只有两种情况的,建议使⽤布尔类型。
结果超过两种并且还是可以⼀枚⼀枚列举出来的,建议使⽤枚举类型。
例如:颜⾊、四季、星期等都可以使⽤枚举类型。
④switch语句⽀持枚举类型。
java 枚举常用的方法在Java编程中,枚举类型是一种非常有用的数据类型,它允许我们定义一组有限的常量。
在本文中,我们将介绍一些常用的Java 枚举方法,以便更好地理解和使用枚举类型。
1. values()方法。
values()方法是枚举类型中非常常用的方法,它返回一个包含枚举类型所有常量的数组。
例如,假设我们有一个名为Color的枚举类型,我们可以使用Color.values()来获取包含所有颜色常量的数组。
java.enum Color {。
RED, GREEN, BLUE;}。
Color[] colors = Color.values(); // 返回包含RED, GREEN, BLUE的数组。
2. valueOf()方法。
valueOf()方法是另一个常用的枚举方法,它允许我们通过枚举常量的名称来获取对应的枚举实例。
例如,使用Color.valueOf("RED")将返回Color.RED枚举实例。
java.Color red = Color.valueOf("RED"); // 返回Color.RED.3. ordinal()方法。
ordinal()方法返回枚举常量的序数,即它在枚举声明中的位置。
注意,枚举常量的序数是从0开始计数的。
java.Color green = Color.GREEN;int ordinal = green.ordinal(); // 返回1。
4. name()方法。
name()方法返回枚举常量的名称,与valueOf()方法相对应,它返回枚举常量的字符串表示。
java.Color blue = Color.BLUE;String name = (); // 返回"BLUE"5. 枚举类型的比较。
枚举类型可以使用==来比较,因为枚举常量在Java中是单例的。
这意味着可以安全地使用==来比较枚举实例,而不必担心对象引用的比较。
详细介绍java中的枚举类型
枚举类型是JDK5.0的新特征。
Sun引进了一个全新的关键字enum来定义一个枚举类。
下面就是一个典型枚举类型的定义:
Java代码:
public enum Color{
RED,BLUE,BLACK,YELLOW,GREEN
}
显然,enum很像特殊的class,实际上enum声明定义的类型就是一个类。
而这些类都是类库中Enum 类的子类(ng.Enum)。
它们继承了这个Enum中的许多有用的方法。
我们对代码编译之后发现,编译器将enum类型单独编译成了一个字节码文件:Color.class。
Color字节码代码
final enum hr.test.Color {
// 所有的枚举值都是类静态常量
public static final enum hr.test.Color RED;
public static final enum hr.test.Color BLUE;
public static final enum hr.test.Color BLACK;
public static final enum hr.test.Color YELLOW;
public static final enum hr.test.Color GREEN;
private static final synthetic hr.test.Color[] ENUM$VALUES;
// 初始化过程,对枚举类的所有枚举值对象进行第一次初始化
static {
0new hr.test.Color [1]
3 dup
4 ldc [16]//把枚举值字符串“RED”压入操作数栈
6 iconst_0 // 把整型值0压入操作数栈
7 invokespecial hr.test.Color(ng.String,int)[17]//调用Color类
的私有构造器创建Color对象RED
10 putstatic hr.test.Color.RED : hr.test.Color [21]//将枚举对象赋给Color
的静态常量RED。
..。
..。
.. 枚举对象BLUE等与上同
102return
};
// 私有构造器,外部不可能动态创建一个枚举类对象(也就是不可能动态创建一个枚举值)。
private Color(ng.String arg0,int arg1){
// 调用父类Enum的受保护构造器创建一个枚举对象
3 invokespecial ng.Enum(ng.String,int)[38]
};
public static hr.test.Color[] values();
// 实现Enum类的抽象方法
public static hr.test.Color valueOf(ng.String arg0);
}
下面我们就详细介绍enum定义的枚举类的特征及其用法。
(后面均用Color举例)
1、Color枚举类就是class,而且是一个不可以被继承的final类。
其枚举值(RED,BLUE.。
.)都是Color类型的类静态常量,我们可以通过下面的方式来得到Color枚举类的一个实例:
Color c=Color.RED;
注意:这些枚举值都是public static final的,也就是我们经常所定义的常量方式,因此枚举类中的枚举值最好全部大写。
2、即然枚举类是class,当然在枚举类型中有构造器,方法和数据域。
但是,枚举类的构造器有很大的不同:
(1)构造器只是在构造枚举值的时候被调用。
Java代码:
enum Color{
RED(255,0,0),BLUE(0,0,255),BLACK(0,0,0),YELLOW(255,255,0),GREEN (0,255,0);
//构造枚举值,比如RED(255,0,0)
private Color(int rv,int gv,int bv){
this.redValue=rv;
this.greenValue=gv;
this.blueValue=bv;
}
public String toString(){ //覆盖了父类Enum的toString()
return super.toString()+“(”+redValue+“,”+greenValue+“,”+blueValue+“)”;
}
private int redValue; //自定义数据域,private为了封装。
private int greenValue;
private int blueValue;
}
(2)构造器只能私有private,绝对不允许有public构造器。
这样可以保证外部代码无法新构造枚举类的实例。
这也是完全符合情理的,因为我们知道枚举值是public static final的常量而已。
但枚举类的方法和数据域可以允许外部访问。
Java代码:
public static void main(String args[])
{
// Color colors=new Color(100,200,300); //wrong
Color color=Color.RED;
System.out.println(color); // 调用了toString()方法
}
3、所有枚举类都继承了Enum的方法,下面我们详细介绍这些方法。
(1) ordinal()方法:返回枚举值在枚举类种的顺序。
这个顺序根据枚举值声明的顺序而定。
Color.RED.ordinal(); //返回结果:0
Color.BLUE.ordinal(); //返回结果:1
(2) compareTo()方法: Enum实现了parable接口,因此可以比较象与指定对象的顺序。
Enum中的compareTo返回的是两个枚举值的顺序之差。
当然,前提是两个枚举值必须属于同一个枚举类,否则会抛出ClassCastException()异常。
(具体可见源代码)
pareTo(Color.BLUE); //返回结果 -1
(3) values()方法:静态方法,返回一个包含全部枚举值的数组。
Color[] colors=Color.values();
for(Color c:colors){
System.out.print(c+“,”);
}//返回结果:RED,BLUE,BLACK YELLOW,GREEN,
(4) toString()方法:返回枚举常量的名称。
Color c=Color.RED;
System.out.println(c);//返回结果: RED
(5) valueOf()方法:这个方法和toString方法是相对应的,返回带指定名称的指定枚举类型的枚举常量。
Color.valueOf(“BLUE”); //返回结果: Color.BLUE
(6) equals()方法:比较两个枚举类对象的引用。
Java代码:
//JDK源代码:
public final boolean equals(Object other) {
return this==other;
}
4、枚举类可以在switch语句中使用。
Java代码:
Color color=Color.RED;
switch(color){
case RED: System.out.println(“it…s red”);break;
case BLUE: System.out.println(“it‟s blue”);break;
case BLACK: System.out.println(“it…s blue”);break;
}
希望通过本文对java中枚举的介绍,能够给你到来帮助。