JAVA枚举
概述【理解】
为了间接的表示一些固定的值,Java就给我们提供了枚举
是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内
定义格式【应用】
- 格式
public enum s {
枚举项1,枚举项2,枚举项3;
}
注意: 定义枚举类要用关键字enum
- 示例代码
package com.javaqian;
/**
* 定义一个枚举类用来表示颜色
*/
public enum Color {
RED,GREEN,YELLOW,BLUE,orange;
}
枚举的特点【理解】
- 特点
- 所有枚举类都是Enum的子类
- 我们可以通过"枚举类名.枚举项名称"去访问指定的枚举项
- 每一个枚举项其实就是该枚举的一个对象
- 枚举也是一个类,也可以去定义成员变量
- 枚举类的第一行上必须是枚举项,最后一个枚举项后的分号是可以省略的,但是如果枚举类有其他的东西,这个分号就不能省略。建议不要省略
- 枚举类可以有构造器,但必须是private的,它默认的也是private的。
枚举项的用法比较特殊:枚举(""); - 枚举类也可以有抽象方法,但是枚举项必须重写该方法
- 示例代码
package com.javaqian;
/**
* 定义一个枚举类用来表示颜色
*/
public enum Color {
RED("红色"){
//如果枚举类中有抽象方法
//那么在枚举项中必须要全部重写
@Override
public void draw() {
System.out.println("this is red");
}
},
GREEN {
@Override
public void draw() {
System.out.println("this is green");
}
},
YELLOW {
@Override
public void draw() {
System.out.println("this is yellow");
}
},
BLUE {
@Override
public void draw() {
System.out.println("this is blue");
}
},
ORANGE {
@Override
public void draw() {
System.out.println("this is orange");
}
};
//定义成员变量
public String name;
//空参构造
private Color() {
}
//有参构造
private Color(String name) {
=name;
}
//抽象方法
public abstract void draw();
}
package com.javaqian;
public class EnumDemo {
public static void main(String[] args) {
/*
1.所有枚举类都是Enum的子类
2.我们可以通过"枚举类名.枚举项名称"去访问指定的枚举项
3.每一个枚举项其实就是该枚举的一个对象
4.枚举也是一个类,也可以去定义成员变量
5.枚举类的第一行上必须是枚举项,最后一个枚举项后的分号是可以省略的,
但是如果枚举类有其他的东西,这个分号就不能省略。建议不要省略
6.枚举类可以有构造器,但必须是private的,它默认的也是private的。
枚举项的用法比较特殊:枚举("");
7.枚举类也可以有抽象方法,但是枚举项必须重写该方法
*/
//第二个特点的演示
//我们可以通过"枚举类名.枚举项名称"去访问指定的枚举项
System.out.println(Color.RED);
System.out.println(Color.BLUE);
System.out.println(Color.YELLOW);
System.out.println(Color.ORANGE);
System.out.println(Color.GREEN);
//第三个特点的演示
//每一个枚举项其实就是该枚举的一个对象
Color yellow = Color.YELLOW;
System.out.println(yellow);
}
}
枚举的方法【应用】
- 方法介绍
方法名 | 说明 |
String name() | 获取枚举项的名称 |
int ordinal() | 返回枚举项在枚举类中的索引值 |
int compareTo(E o) | 比较两个枚举项,返回的是索引值的差值 |
String toString() | 返回枚举常量的名称 |
static T valueOf(Class type,String name) | 获取指定枚举类中的指定名称的枚举值 |
values() | 获得所有的枚举项 |
- 示例代码
package com.javaqian;
import com.sun.media.sound.SoftTuning;
public class EnumDemo1 {
public static void main(String[] args) {
// String name() 获取枚举项的名称
String name = Color.YELLOW.name();
System.out.println(name);
System.out.println("---------------------");
// int ordinal() 返回枚举项在枚举类中的索引值
int ordinal = Color.YELLOW.ordinal();
int ordinal1 = Color.GREEN.ordinal();
System.out.println(ordinal);
System.out.println(ordinal1);
System.out.println("----------------------");
// int compareTo(E o) 比较两个枚举项,返回的是索引值的差值
int i = Color.RED.compareTo(Color.BLUE);
System.out.println(i);
System.out.println("---------------------");
// String toString() 返回枚举常量的名称
String string = Color.ORANGE.toString();
System.out.println(string);
System.out.println("-----------------------");
// static <T> T valueOf(Class<T> type,String name)
// 获取指定枚举类中的指定名称的枚举值
Color blue = Enum.valueOf(Color.class, "BLUE");
System.out.println(blue);
System.out.println(Color.BLUE==blue);
System.out.println("------------------------");
// values() 获得所有的枚举项
Color[] values = Color.values();
for (Color value : values) {
System.out.println(value);
}
}
}
- 运行结果图