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_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枚举类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中的枚举类型

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中的枚举类型,并探讨它们的使用场景和优势。
一、枚举类型的定义和基本语法在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()方法来获取该描述信息。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
java枚举类型
public class TestEnum {
/*最普通的枚举*/
public enum ColorSelect {
red, green, yellow, blue;
}
/* 枚举也可以象一般的类一样添加方法和属性,你可以为它添加静态和非静态的属性或方法,这一切都象你在一般的类中做的那样. */
public enum Season {
// 枚举列表必须写在最前面,否则编译出错
winter, spring, summer, fall;
private final static String location = "Phoenix";
public static Season getBest() {
if (location.equals("Phoenix"))
return winter;
else
return summer;
}
}
/*还可以有构造方法*/
public enum Temp {
/*通过括号赋值,而且必须有带参构造器和一属性跟方法,否则编译出错
* 赋值必须是都赋值或都不赋值,不能一部分赋值一部分不赋值
* 如果不赋值则不能写构造器,赋值编译也出错*/
absoluteZero(-459), freezing(32),boiling(212), paperBurns(451);
private final int value;
public int getValue() {
return value;
}
//构造器默认也只能是private, 从而保证构造函数只能在内部使用
Temp(int value) {
this.value = value;
}
}
public static void main(String[] args) {
/*
* 枚举类型是一种类型,用于定义变量,以限制变量的赋值赋值时通过"枚举名.值"来取得相
关枚举中的值
*/
ColorSelect m = ColorSelect.blue;
switch (m) {
/*注意:枚举重写了ToString(),说以枚举变量的值是不带前缀的
*所以为blue而非ColorSelect.blue
*/
case red:
System.out.println("color is red");
break;
case green:
System.out.println("color is green");
break;
case yellow:
System.out.println("color is yellow");
break;
case blue:
System.out.println("color is blue");
break;
}
System.out.println("遍历ColorSelect中的值");
/*通过values()获得枚举值的数组*/
for (ColorSelect c : ColorSelect.values()) {
System.out.println(c);
}
System.out.println("枚举ColorSelect中的值有:"+ColorSelect.values().length+"个");
/*ordinal()返回枚举值在枚举中的索引位置,从0开始*/
System.out.println(ColorSelect.red.ordinal());//0
System.out.println(ColorSelect.green.ordinal());//1
System.out.println(ColorSelect.yellow.ordinal());//2
System.out.println(ColorSelect.blue.ordinal());//3
/*枚举默认实现了parable接口*/
System.out.println(pareTo(ColorSelect.green));
System.out.println(Season.getBest());
for(Temp t:Temp.values()){
/*通过getValue()取得相关枚举的值*/
System.out.println(t+"的值是"+t.getValue());
}
} }。