Java枚举类型
1、什么是枚举?
JDK1.5引入了新的类型——枚举,最初用于表示一组信号,如下代码所示:
enum Signal
{
GREEN, YELLOW, RED
}
后来,延伸成一组相关的常量。我们知道,函数常量是通过final进行修饰的,而类常量是通过static final修饰的,而枚举则是通过enum关键字修饰的。
2、枚举如何使用?
在使用枚举之前,我们要明白字面量。只有深刻的掌握了字面量才能更好的使用枚举,因为枚举的本质就是字面量。
与字面量相对应的是变量。变量,顾名思义,可以进行变动的某类东西。变量由三部分做成:变量类型,变量名,变量值,如代码所示:int a = 10;在这个代码中,a是变量名,代表着一个变量。仅仅看一眼a,我们压根不知道它的值是什么,但是10则不一样,它就代表10,此时10称为“字面量”。除此以外,像"Tom"、True等在编码中出现的,我们能一眼懂的东西,都是字面量。字面量通常分为:字母字面量、数字字面量、True/False逻辑字面量等,如今又增加了枚举字面量。
因为枚举的本质就是字面量,所以如下代码输出的是:RED
public class Test
{
enum Color
{
RED, GREEN, BLUE;
}
public static void main(String[] args)
{
Color c1 = Color.RED;
System.out.println(c1);
}
}
3、枚举字面量、字符字面量、数字字面量的关系
字面量通常分为:字母字面量、数字字面量、True/False逻辑字面量等,如今又增加了枚举字面量。那么枚举字面量和其他的字面量有什么关系吗?有,很有关系,它们之间可以互换。
3.1、enum<->int
enum -> int,对应于:
int i = enumType.value.ordinal();
int -> enum,对应于:
enumType b= enumType.values()[i];
3.2、enum<->String
enum -> String对应于:
enumType.name()
String -> enum对应于:
enumType.valueOf(name);