枚举(enum)
枚举(enum)
枚举是一个特殊的类,一般表示一组常量,如一年四季,一周七天
枚举用关键字enum表示,各个常量使用 ',' 隔开
示例:
enum Color{
RED,YELLOW,BLUE
}
public staic void main(String[] args){
Color c=Color.RED;
sout(c);
}
//执行结果为 RED
enum常用的几个方法
enum 定义的枚举类默认继承了 java.lang.Enum 类,并实现了 java.lang.Serializable 和 java.lang.Comparable 两个接口
values() 返回枚举中的所有值
valueof() 返回指定字符串值常量的枚举值
ordinal() 返回每个枚举常量的索引,即在一组常量中处于第几个位置
enum Color{
RED,YELLOW,BLUE
}
public staic void main(String[] args){
Color c=Color.YELLOW;
System.out.println(Color.valueOf("RED"));
System.out.println(c.ordinal());
}
//执行结果为
//RED
//1
用途
枚举使用在内部类中
class A{
enum Color{
RED,YELLOW,BLUE
}
public staic void main(String[] args){
Color c=Color.RED;
sout(c);
}
}
//执行结果为 RED
注意:枚举中的所有值都是 public static final 类型的
迭代枚举元素
enum Color{
RED,YELLOW,BLUE
}
public staic void main(String[] args){
for(Color color:Color.values()){
sout(color)
}
}
在switch中使用枚举
enum Color{
RED,YELLOW,BLUE
}
public staic void main(String[] args){
Color color=Color.BLUE;
switch (color){
case RED:
System.out.println("红色!");
break;
case BLUE:
System.out.println("蓝色!!");
break;
default:
System.out.println("绿色!!!");
break;
}
}
枚举类成员
枚举类和普通类相同,都有变量,方法,和构造函数。构造函数只能使用private关键字修饰,外部无法调用
枚举类也可以有普通方法和抽象方法,若有抽象方法则枚举类的每个实例都必须重写该方法
enum Color
{
RED, GREEN, BLUE;
private Color(){
System.out.println("调用构造方法的是"+this.toString());
}
public void method(){
System.out.println("枚举类中也可以有方法!!!");
}
public static void main(String[] args)
{
Color color=Color.RED;
Color color1=Color.BLUE;
System.out.println(color);
color.method();
}
//输出结果为
/*
调用构造方法的是RED
调用构造方法的是GREEN
调用构造方法的是BLUE
RED
枚举类中也可以有方法!!!
*/
从上述结果看,枚举中的每个常量都是枚举的一个实例,且在获取一个常量时,会将所有常量都实例化
且只会实例化一次