星期六, 十一月 21, 2015 08:28:48
一、
1.作用
取代以往定义常量的方式,
程序在编译时检查的功能。
2.使用枚举类型设置常量
2.1在接口中定义常量的常规方式
在以往设置常量时,通常将常量放置在接口中,这样程序中就可以直接使该常量用,并且该常量不可被修改,‘
因为在接口中定义该常量时,用static和final修饰符
public interface Constants{
public static final int C_A = 1;
public static final int C_B = 2;
}
2.2在JDK1.5版本新增枚举类型后就逐渐取代了以上定义常量的形式。
语法:
java.lang.Enum<E>
public enum Constants {
C_A,
C_B,
C_C
}
当需要在程序中使用该常量时,可以使用Constants.C_A来表示。
2.2.2可以把相关的常量分组到一个枚举类型里
二、代码案例
1.代码案例:
enum是jdk5引入的语法,定义一个enum类实际上也是定义一个class,只是通过enum定义这个特殊class的时候,编译器会帮你做些事情:
所的枚举类会默认继承Enum类
所的枚举类是final的,不可扩展子类
所定义的枚举常量,会生成定义的枚举类中生成public static final常量
package day20;
public class EnumTest {
public enum Yuzhou {
NONAME,ONENAAME,TWONAME;
}
public static void main(String[] args) {
Yuzhou yy = Yuzhou.NONAME;
switch(yy) {
case NONAME:
System.out.println(".....NONAME");
break;
case ONENAAME:
System.out.println(".....ONENAME");
break;
case TWONAME:
System.out.println(".....TWONAME");
break;
default:
System.out.println("..............");
}
}
}
运行结果:
.....NONAME
问题:
1.Yuzhou yy = Yuzhou.NONAME,赋值枚举变量的时候,当然要带前缀了,因为这些枚举常量是指定枚举类中的常量,必须加上类限定前缀。
2.java的switch语法,是通过jvm的tableswitch和lookupswitch两个指令实现。
简单说一下实现原理:java编译器为switch语句编译成一个局部变量数组,每个case对应一个数组的索引,指令的执行是通过不同的数组索引找到不同的入口指令。所以原则上switch...case只能处理int型的变量。
3.enum能用在switch语句中,也是一个语法,我们知道所有枚举类的父类Enum中有一个private final int ordinal;,java编译器检测到switch语句中变量是一个枚举类,则会利用之前枚举类的ordinal属性,编译一个局部变量数组,
4.后续在进行case分支比较的时候,就是简单通过tableswitch或lookupswitch指令来进行跳转,
需要注意的一点:这个局部变量数组的构建过程是在编译器在编译阶段完成的
1.2代码案例:
向枚举中添加新方法
package day20;
public class EnumTest {
/*本例: 向枚举中添加新方法
* 如果打算自定义自己的方法,那么必须在enum实例序列的最后添加一个分号。
* 而且 Java 要求必须先定义 enum 实例。*/
public enum Color{
RED(1,"红色"),GREEN(2,"绿色"),YELLOW(3,"黄色");
//定义私变量
private int inode;
private String value;
//定义构造方法,枚举类型只能为私
private Color(int _node,String _value) {
this.inode = _node;
this.value = _value;
}
//普通方法
public static String getValue(int _inode){
for(Color c : Color.values()) {
if(c.getInode() == _inode) {
return c.value;
}
}
return null;
}
//get set方法
public int getInode() {
return inode;
}
public void setInode(int inode) {
this.inode = inode;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
public static void main(String[] args) {
System.out.print(Color.getValue(3));
}
}
1.3
案例3:
package day20;
public class EnumTest {
/*本例: 向枚举中添加新方法
* 如果打算自定义自己的方法,那么必须在enum实例序列的最后添加一个分号。
* 而且 Java 要求必须先定义 enum 实例。*/
public enum Yuzhou {
NONAME("waxun"),ONENAAME("yuzhou"),TWONAME("xiner");
String name;
private Yuzhou(String _name) {
this.name = _name;
}
public static String getValue(String _name){
for(Yuzhou y: Yuzhou.values()) {
if(y.getName() == _name) {
return y.name;
}
}
return null;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public static void main(String[] args) {
System.out.print(Yuzhou.getValue("waxun"));
}
}
运行结果:
waxun
星期六, 十一月 21, 2015 11:15:47
相关推荐
Java枚举(enum)是Java语言中的一种特殊数据类型,用于定义一组有限的常量,这些常量在程序中作为固定的值使用。枚举在Java中被引入,目的是为了更好地管理和使用常量,提高代码的可读性和安全性。在本实例代码中,...
Java枚举可以实现接口,也可以拥有字段和方法,因此可以用来创建复杂的枚举集。例如,可以定义一个表示星期几的枚举,并为每个枚举值添加额外的属性或行为: ```java public enum DayOfWeek implements Comparable...
Java枚举类型是Java语言中一种特殊的类,用于定义固定的常量集合,它提供了一种安全、类型化的方式来表示一组有限的值。枚举在Java中被引入为一个完整的类型,不同于C++中的枚举,这使得Java枚举更加强大且易于使用...
Java枚举是编程语言Java中的一个特色特性,它在类、接口和变量的定义中扮演着特殊的角色。枚举在Java中被用作一种数据类型,用于定义一组固定的常量,这些常量可以代表特定的值或状态。通过枚举,我们可以确保变量...
本篇文章将深入探讨Java枚举的使用及其背后的原理。 一、枚举的定义与使用 1. 基本用法: 在Java中,枚举可以通过`enum`关键字来创建。例如,我们可以定义一个表示一周七天的枚举类型: ```java public enum ...
枚举是Java 1.5版本引入的一种新的数据类型,它与类和接口处于同一级别。枚举定义的关键字是`enum`。所有枚举都是继承自`java.lang.Enum`类的。枚举本质上是类的多个预定义对象。枚举常量通常采用大写字母表示,并...
在本压缩包中,"Java 枚举类型案例"可能包含了多个示例,以帮助我们深入理解Java枚举类型的使用。 1. **枚举的定义** 在Java中,枚举是通过关键字`enum`来定义的。例如,创建一个表示星期的枚举类型: ```java ...
- Java枚举确保了类型安全,因为枚举值只能是预先定义的实例。尝试将非枚举类型的值赋给枚举变量会导致编译错误。例如: ```java public enum Day {SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, ...
创建一个新的Java工程,可以通过菜单栏的File -> New -> Java Project,然后输入工程名称,比如按照学习进度命名(例如day01)。 **Eclipse使用技巧:** 1. **创建Java工程**:通过File -> New -> Java Project,...
Java中的枚举(enum)类型是在JDK 1.5版本引入的一个强大的特性,它用于定义一组相关的常量。在C/C++等语言中,枚举通常用来表示一组具有固定值的常量集合,但在Java中,枚举不仅限于此,它提供了更多的功能和灵活性...
Java 枚举是一种特殊的类,用于定义一组固定的常量,这些常量代表特定的值或状态。枚举在编程中非常有用,特别是在处理有限数量的选项时,如颜色、星期几、季节等。通过使用枚举,我们可以确保代码的健壮性,避免因...
#### 二、Java枚举的基本概念 1. **什么是Java枚举?** - 枚举(`enum`)是Java中的一种特殊类,它只能包含固定数量的实例。 - 枚举中的每个元素都是该类型的实例,它们是类的成员,并且默认是静态和final的。 - ...
在Java编程语言中,枚举是一种特殊的类类型,用于定义一组预定义的值。尽管Java在早期版本中并未直接支持枚举,但在Java 5及以后版本中引入了枚举类型,以满足开发者对于类型安全和高效代码的需求。以下是对枚举类型...
CoreJava DAY10 主方法,静态导入,包装类,枚举 32 CoreJava DAY11 内部类 36 CoreJava DAY12 集合 List 40 CoreJava DAY13 集合 Set 46 CoreJava DAY14 集合 Map 49 CoreJava DAY15 异常、断言 52 CoreJava DAY16 ...
例如,Java 5.0引入了泛型和枚举等新特性,Java 8则引入了Lambda表达式、方法引用来增强函数式编程能力,并且是长期支持(LTS)版本。自Java 9起,Oracle开始实行每半年发布一个新版本的策略,但不再支持某些旧系统...
9. **状态管理**:游戏有多个状态(如开始、暂停、结束),Java的枚举类型可以用来管理这些状态。 10. **持久化存储**:游戏进度、用户设置等需要保存,Java的序列化或第三方库如SQLite可以帮助实现。 至于标签...
枚举在各种编程语言中都有其独特的实现方式,比如在Java、C#、Python等。在本实例177中,我们将关注如何在枚举中增加更多的信息,这通常涉及到为枚举值添加额外的属性或方法,以增强枚举的功能性。 首先,让我们...
CoreJava DAY10 主方法,静态导入,包装类,枚举 62 CoreJava DAY11 内部类 70 CoreJava DAY12 集合 List 78 CoreJava DAY13 集合 Set 85 CoreJava DAY14 集合 Map 92 CoreJava DAY15 异常、断言 98 CoreJava DAY16 ...
本教程将深入探讨Java枚举类的概念、用法以及在集合中的应用。 一、枚举类的概念 枚举类是Java 5引入的新特性,它允许我们创建具有预定义值的类型安全的类。枚举不是简单的常量集合,而是一个完整的类,可以拥有...