全面掌握java枚举类型
java枚举类型enum用法 switch-概述说明以及解释
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中的枚举类型
详细介绍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)详解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(枚举)使用详解+,总结 enum枚举java
java,enum(枚举)使用详解+,总结 enum枚举javaenum的全称为enumeration,是jdk1.5中引入的新特性,存放在ng包中。
下面是我在使用enum过程中的一些经验和总结。
完整的接口定义常量语法(定义)建立枚举类型必须采用enum关键字,暗含了所建立的类型都就是ng.enum类的子类(ng.enum就是一个抽象类)。
枚举类型合乎通用型模式classenum这段代码实际上调用了7次enum(stringname,intordinal):结点、switch等常用操作方式对enum进行遍历和switch的操作示例代码:输入结果:enum对象的常用方法介绍intcompareto(eo)比较此枚举与指定对象的顺序。
classgetdeclaringclass()返回与此枚举常量的枚举类型相对应的class对象。
stringname()返回此枚举常量的名称,在其枚举声明中对其进行声明。
intordinal()返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。
stringtostring()返回枚举常量的名称,它包含在声明中。
static输出结果:给enum自定义属性和方法给enum对象加一下value的属性和getvalue()的方法:输入结果:enumset,enummap的应用原理分析enum的语法结构尽管和class的语法不一样,但是经过编译器编译之后产生的是一个class文件。
该class文件经过反编译可以看到实际上是生成了一个类,该类继承了ng.enum。
enumtest经过反编译(javapcohmw.test.enumtest命令)之后得到的内容如下:所以,实际上enum就是一个class,只不过java编译器帮忙我们搞了语法的解析和编程而已。
总结可以把enum看作就是一个普通的class,它们都可以定义一些属性和方法,不同之处就是:enum无法采用extends关键字承继其他类,因为enum已经承继了ng.enum (java就是单一承继)。
全面掌握java枚举类型(enum_type)
全面掌握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基础篇---枚举详解
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枚举类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类详解
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中的枚举类型
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枚举类型是一种特殊的数据类型,它允许我们定义一个有限个数的常量,并将这些常量作为一个独立的数据类型来使用。
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)
三分钟快速掌握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枚举的用法枚举(Enumeration)是Java语言中的一种数据类型,它允许我们定义一组具有相同类型的常量。
枚举在Java中广泛应用于表示一组固定的值,例如表示一周的天数、一年的月份等。
本文将介绍Java枚举的基本概念、定义、遍历和应用等方面内容,以便读者全面了解并掌握Java枚举的用法。
一、枚举的基本概念枚举是一种特殊的类,它包含一组已命名的常量,常量的值在枚举中是唯一的。
枚举类型声明使用关键字enum,它可以包含方法、构造函数和属性。
枚举中的每个常量都是一个实例对象,这些对象在枚举类中定义。
枚举常量的名称通常采用大写字母,多个单词之间使用下划线分隔。
例如,我们可以定义一个表示一周七天的枚举类型:enum Weekday {MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY,SATURDAY, SUNDAY}上述代码定义了一个Weekday枚举类,它包含七个常量,分别代表星期一到星期日。
二、枚举的定义在Java中,我们可以通过以下两种方式来定义一个枚举类型。
1. 在类的内部定义枚举类型我们可以在类的内部定义一个枚举类型,它可以包含多个常量、方法和其他成员变量。
class EnumExample {enum Color {RED, GREEN, BLUE}public static void main(String[] args) {Color color = Color.RED;System.out.println("Selected color: " + color);}}上述代码定义了一个EnumExample类,在该类内部定义了一个Color 枚举类型,它包含三个常量:RED、GREEN和BLUE。
在main方法中,我们实例化了一个Color对象color,并将其初始化为RED,然后将其打印输出。
2. 单独定义一个枚举类型除了在类的内部定义枚举类型外,我们还可以单独定义一个枚举类型。
java枚举详解
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基础教程——枚举类型枚举类型枚举类型在JDK 5时引⼊。
enum WeekEnum {MONDAY, TUESDAY, WEDNESDAY, THURDAY, FRIDAY, SATURDAY, SUNDAY}Java的枚举类ng.Enum中,有:|--private final String name;(定义时可表意的标识符)|--private final int ordinal;(序数,从0开始)|--及对应的获取⽅法。
public class Enum1Common {enum WeekEnum {MONDAY, TUESDAY, WEDNESDAY, THURDAY, FRIDAY, SATURDAY, SUNDAY}public static void main(String[] args) {System.out.println("枚举类型标识符:" + WeekEnum.FRIDAY);for (WeekEnum day : WeekEnum.values()) {System.out.print("直接输出:" + day);// toString()System.out.print("\t name:" + ());System.out.println("\t ordinal:" + day.ordinal());// 序数}}}枚举类型标识符:FRIDAY直接输出:MONDAY name:MONDAY ordinal:0直接输出:TUESDAY name:TUESDAY ordinal:1直接输出:WEDNESDAY name:WEDNESDAY ordinal:2直接输出:THURDAY name:THURDAY ordinal:3直接输出:FRIDAY name:FRIDAY ordinal:4直接输出:SATURDAY name:SATURDAY ordinal:5直接输出:SUNDAY name:SUNDAY ordinal:6*枚举是“特殊的类”枚举类型是⼀种“特殊的类”,它可以有⾃⼰的属性和⽅法(包括构造⽅法)。
Java中枚举Enum的使用详解
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枚举类型
Java 枚举:是其中一个一个比较特殊的类,它一般也就是一组常量
例如:春、夏、秋、冬;星期一、星期二、星期三……
像这种当一个变量有几种固定可能的取值时, 可以将它定义为枚举类型。
JDK1.5 版本之前的需要自定义枚举类.
JDK 1.5 之后新加了 enum 关键字来定义枚举类.
若变量只有一个固定对象,枚举可以作为一种单例模式的实现方式。
值得注意的是:枚举不可以实现继承但可以实现接口
枚举类型的常用方法:
在枚举类型中,可以添加构造方法,但是规定这个构造方法必须为private修饰符修饰。
也可以将方法放置在接口中,使枚举类型实现接口,然后使每个枚举类型实现接口中的方法。
使用枚举类型的优势:
枚举类型声明提供了一种方便用户定义程序中变量的方法,枚举出某个变量类型所有可能出现的值。
总结枚举类型,它具有以下特点:
(1)枚举类型方便安全。
(2)方便程序中的数据定义。
(3)使得程序与数据完美融合。
(4)运行效率高。
java enum类方法
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 枚举常用的方法
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枚举类型enum及其使用
详解Java枚举类型enum及其使用详解Java枚举类型enum及其使用Java 中的枚举类型采用关键字enum 来定义,从jdk1.5才有的新类型,所有的枚举类型都是继承自Enum 类型。
以下是店铺搜索整理的关于Java枚举类型enum详解及其使用,,需要的朋友可以参考本文!想了解更多相关信息请持续关注我们店铺!要了解枚举类型,建议大家先打开jdk 中的Enum 类简单读一下,这个类里面定义了很多protected 方法,比如构造函数,如果要使用这些方法我们可以把枚举类型定义到当前类中。
每个枚举类型,都有自己的名字和顺序,当我们输出一个枚举类型的时候,会输入枚举类型的name ,具体可以参考下面的例子。
一、通常定义常量方法我们通常利用public final static 方法定义的代码如下,分别用1 表示红灯,3 表示绿灯,2 表示黄灯。
package com.csdn.myEnum;public class Light {/* 红灯 */public final static int RED =1;/* 绿灯 */public final static int GREEN =3;/* 黄灯 */public final static int YELLOW =2;}二、枚举类型定义常量方法枚举类型的简单定义方法如下,我们似乎没办法定义每个枚举类型的值。
比如我们定义红灯、绿灯和黄灯的代码可能如下:public enum Light {RED , GREEN , YELLOW ;}我们只能够表示出红灯、绿灯和黄灯,但是具体的值我们没办法表示出来。
别急,既然枚举类型提供了构造函数,我们可以通过构造函数和覆写toString 方法来实现。
首先给Light 枚举类型增加构造方法,然后每个枚举类型的值通过构造函数传入对应的参数,同时覆写toString 方法,在该方法中返回从构造函数中传入的参数,改造后的'代码如下:public enum Light {// 利用构造函数传参RED (1), GREEN (3), YELLOW (2);// 定义私有变量private int nCode ;// 构造函数,枚举类型只能为私有private Light( int _nCode) {this . nCode = _nCode;}@Overridepublic String toString() {return String.valueOf ( this . nCode );}}三、完整示例代码枚举类型的完整演示代码如下:package com.csdn.myEnum;import java.util.EnumMap;import java.util.EnumSet;public class LightT est {// 1. 定义枚举类型public enum Light {// 利用构造函数传参RED (1), GREEN (3), YELLOW (2);// 定义私有变量private int nCode ;// 构造函数,枚举类型只能为私有private Light( int _nCode) {this . nCode = _nCode;}@Overridepublic String toString() {return String.valueOf ( this . nCode );}}/*** @param args*/public static void main(String[] args ) {// 1. 遍历枚举类型System. out .println( " 演示枚举类型的遍历 ......" ); testTraversalEnum ();// 2. 演示 EnumMap 对象的使用System. out .println( " 演示 EnmuMap 对象的使用和遍历 ....." ); testEnumMap ();// 3. 演示 EnmuSet 的使用System. out .println( " 演示 EnmuSet 对象的使用和遍历 ....." ); testEnumSet ();}/*** 演示枚举类型的遍历*/private static void testTraversalEnum() {Light[] allLight = Light.values ();for (Light aLight : allLight) {System. out .println( " 当前灯 name : " + ());System. out .println( " 当前灯 ordinal : " + aLight.ordinal());System. out .println( " 当前灯: " + aLight);}}/*** 演示 EnumMap 的使用, EnumMap 跟 HashMap 的使用差不多,只不过 key 要是枚举类型*/private static void testEnumMap() {// 1. 演示定义 EnumMap 对象, EnumMap 对象的构造函数需要参数传入 , 默认是key 的类的类型EnumMap currEnumMap = new EnumMap(Light. class );currEnumMap.put(Light. RED , " 红灯 " );currEnumMap.put(Light. GREEN , " 绿灯 " );currEnumMap.put(Light. YELLOW , " 黄灯 " );// 2. 遍历对象for (Light aLight : Light.values ()) {System. out .println( "[key=" + () + ",value="+ currEnumMap.get(aLight) + "]" );}}/*** 演示 EnumSet 如何使用, EnumSet 是一个抽象类,获取一个类型的枚举类型内容* 可以使用 allOf 方法*/private static void testEnumSet() {EnumSet currEnumSet = EnumSet.allOf (Light. class );for (Light aLightSetElement : currEnumSet) {System. out .println( " 当前EnumSet 中数据为:" + aLightSetElement);}}}执行结果如下:演示枚举类型的遍历 ......当前灯 name : RED当前灯 ordinal : 0当前灯: 1当前灯 name : GREEN当前灯 ordinal : 1当前灯: 3当前灯 name : YELLOW当前灯 ordinal : 2当前灯: 2演示 EnmuMap 对象的使用和遍历 .....[key=RED,value= 红灯 ][key=GREEN,value= 绿灯 ][key=YELLOW,value= 黄灯 ]演示 EnmuSet 对象的使用和遍历 .....当前 EnumSet 中数据为: 1当前 EnumSet 中数据为: 3当前 EnumSet 中数据为: 2四、通常定义常量方法和枚举定义常量方法区别以下内容可能有些无聊,但绝对值得一窥1. 代码:public class State {public static final int ON = 1;public static final Int OFF= 0;}有什么不好了,大家都这样用了很长时间了,没什么问题啊。
Java枚举类
Java枚举类1.枚举类概述enumkeyword,⽤来定义枚举类。
它与class,interfacekeyword的地位同样。
枚举类是⼀种特殊的类。
但枚举类终究不是普通类,它与普通类有下⾯⼏个差别:①枚举类不能够继承类。
但能够继承接⼝,使⽤enum定义的枚举类默认继承了ng.Enum类。
②使⽤enum定义⾮抽象的枚举类默认会使⽤final修饰,因此枚举类不能派⽣⼦类。
假设是抽象枚举也不能⽤"abstract"修饰符修饰,编译器⾃⼰⼼中有数。
③枚举类的构造⽅法仅仅能⽤private修饰訪问权限。
假设省略了訪问权限修饰符还是会默认private修饰符。
④枚举类的全部枚举实例都必须放在枚举类中的最上⽅(最顶⾏)。
否则这个枚举类不能产⽣实例。
这些枚举实例会⾃⼰主动加⼊public static final修饰符。
⑤枚举类中的枚举实例会⽤逗号(,)隔开。
当枚举类中仅仅有枚举实例时。
最后⼀个枚举实例后⾯能够不加分号(;),否则必须加分号(;)。
2.枚举类的使⽤2.1枚举类能够在switch语句中使⽤enum Color {RED,GREEN,BLUE}class Test {Color color = Color.RED;public void change() {switch (color) {case RED:System.out.println("我是红⾊");break;case GREEN:System.out.println("我是绿⾊");break;case BLUE:System.out.println("我是蓝⾊");break;default:System.out.println("我不知道⾃⼰是什么颜⾊");}}}2.2枚举类能够能够加⼊成员变量和⽅法enum Color {RED,GREEN,BLUE;public int i;public void play(){System.out.println("我是play⽅法");}}2.3枚举类能够加⼊构造⽅法enum Color {//通过括号赋值,必须和所拥有的构造⽅法相应。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
枚举类型是JDK5.0的新特征。
Sun引进了一个全新的关键字enum来定义一个枚举类。
下面就是一个典型枚举类型的定义:
Java代码
1.public enum Color{
2. RED,BLUE,BLACK,YELLOW,GREEN
3.}
显然,enum很像特殊的class,实际上enum声明定义的类型就是一个类。
而这些类都是类库中Enum类的子类(ng.Enum<E>)。
它们继承了这个Enum中的许多有用的方法。
下面我们就详细介绍enum定义的枚举类的特征及其用法。
(后面均用Color举例)
1、Color枚举类是特殊的class,其枚举值(RED,BLUE...)是Color的类对象(类实例):
Color c=Color.RED;
而且这些枚举值都是public static final的,也就是我们经常所定义的常量方式,因此枚举类中的枚举值最好全部大写。
2、即然枚举类是class,当然在枚举类型中有构造器,方法和数据域。
但是,枚举类的构造器有很大的不同:
(1) 构造器只是在构造枚举值的时候被调用。
Java代码
1.enum Color{
2. RED(255,0,0),BLUE(0,0,255),BLACK(0,0,0),YELLOW(2
55,255,0),GREEN(0,255,0);
3. //构造枚举值,比如RED(255,0,0)
4. private Color(int rv,int gv,int bv){
5. this.redValue=rv;
6. this.greenValue=gv;
7. this.blueValue=bv;
8. }
9.
10. public String toString(){ //自定义的public方
法
11. return super.toString()+"("+redValue+","+greenVa
lue+","+blueValue+")";
12. }
13.
14. private int redValue; //自定义数据域,private为
了封装。
15. private int greenValue;
16. private int blueValue;
17. }
(2) 构造器只能私有private,绝对不允许有public构造器。
这样可以保证外部代码无法新构造枚举类的实例。
这也是完全符合情理的,因为我们知道枚举值是public static final的常量而已。
但枚举类的方法和数据域可以允许外部访问。
Java代码
1.public static void main(String args[])
2.{
3. // Color colors=new Color(100,200,300); //wrong
4. Color color=Color.RED;
5. System.out.println(color); // 调用了toString()方
法
6.}
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代码
1.//JDK源代码:
2.public final boolean equals(Object other) {
3. return this==other;
4.}
4、枚举类可以在switch语句中使用。
Java代码
1.Color color=Color.RED;
2.switch(color){
3. case RED: System.out.println("it's red");break;
4. case BLUE: System.out.println("it's blue");break;
5. case BLACK: System.out.println("it's blue");break;
6.}。