枚举类型
1.使用枚举类型设置常量:
// SeasonInterface接口
public interface SeasonInterface {
int SPRING = 1,SUMMER = 2,AUTUMN = 3,WINTER = 4;
}
// SeasonEnum常量
enum SeasonEnum implements SeasonInterface{
SPRING, SUMMER ,AUTUMN ,WINTER
}
// SeasonDemo类
public class SeasonDemo {
public static void printSeason1(int season){
switch (season){
case SeasonInterface.SPRING:
System.out.println("这是春季");break;
case SeasonInterface.SUMMER:
System.out.println("这是夏季");break;
case SeasonInterface.AUTUMN:
System.out.println("这是秋季");break;
case SeasonInterface.WINTER:
System.out.println("这是冬季");break;
default:
System.out.println("这不是四季常量");
}
}
public static void printSeason2(SeasonEnum season){
switch (season){
case SPRING:
System.out.println("这是春季");break;
case SUMMER:
System.out.println("这是夏季");break;
case AUTUMN:
System.out.println("这是秋季");break;
case WINTER:
System.out.println("这是冬季");break;
}
}
public static void main(String[] args){
printSeason1(SeasonInterface.SPRING);
printSeason1(3);
printSeason1(-1);
printSeason2(SeasonEnum.WINTER);
}
}
2.枚举类型的常用方法
(1)values()方法
// SeasonEnum枚举类
enum SeasonEnum {
SPRING,SUMMER,AUTUMN,WINTER;
}
// ShowEnum类
public class ShowEnum {
public static void main(String[] args) {
SeasonEnum es[] = SeasonEnum.values();
for(int i = 0;i < es.length ;i ++){
System.out.println("枚举常量:" + es[i]);
}
}
}
(2)valueOf()方法与compareTo方法
eg.使用字符串创建一个季节的枚举值,并判断季节的位置
// SeasonEnum
public enum SeasonEnum {
SPRING, SUMMER ,AUTUMN ,WINTER;
}
// EnumMethodTest类
public class EnumMethodTest {
public static void main(String[] args) {
SeasonEnum tmp = SeasonEnum.valueOf("SUMMER");
SeasonEnum es[] = SeasonEnum.values();
for(int i = 0 ; i < es.length;i ++){
String message = "";
int result = tmp.compareTo(es[i]);
if(result < 0){
message = tmp + "在" + es[i] + "的前" + (-result) + "个位置";
}else if(result > 0){
message = tmp + "在" + es[i] + "的后" + result + "个位置";
}else if(result == 0){
message = tmp + "与" + es[i] + "是同一个值";
}
System.out.println(message);
}
}
}
(3)ordinal()方法
枚举类型中的ordinal()方法用于获取某个枚举对象的位置索引值
enum SeasonEnum {
SPRING, SUMMER, AUTUMN, WINTER
}
public class EnumIndexTest {
public static void main(String[] args) {
SeasonEnum es[];
es = SeasonEnum.values();
for(int i = 0;i < es.length;i ++){
System.out.println(es[i] + "在枚举类型中位置索引值" + es[i].ordinal());
}
}
}
(4)枚举类型中的构造方法
注意:在枚举数据类型中,可以添加构造法法,但是规定这个构造方法必须被private修饰符所修饰。枚举类型定义的构造方法语法。我们用一个例子来说明:
为四季枚举创建构造方法,记录每一个季节的特征
enum SeasonEnum{
SPRING("万物复苏"),
SUMMER("烈日炎炎"),
AUTUMN("秋草枯黄"),
WINTER("白雪皑皑");
private String remark;
private SeasonEnum(String remark){
this.remark = "我是" + this.toString() + ",我来之后" + remark + "。";
}
public String getRemark(){
return remark;
}
}
public class EnumConstructTest {
public static void main(String[] args) {
SeasonEnum es[] = SeasonEnum.values();
for(int i = 0;i < es.length;i ++){
System.out.println(es[i].getRemark());
}
}
}
3.枚举类型的优势
(1)类型安全
(2)紧凑有效的数据定义
(3)可以和程序其他部分完美交互
(4)运行效率高