Enum枚举类

Enum枚举类

枚举类

当我们在定义有限的成员变量时我们通常是这样定义的

public class Week(){
    public static String MONTHDAY = "星期一";
    public static String THURSDAY = "星期二";
    public static String WENSDAY = "星期三";
    .
    .
     public static String SUNDAY = "星期天";
}

问题:如果我们想知道一个星期有几天,或者如果我们在复制的时候赋值错了

public static String MONTHDAY = "星期一";
public static String THURSDAY = "星期一";

编译器都可以通过,不会出现报错

那么怎么才能更加优雅的解决这个问题呢?java给我们提供了Enum枚举类。枚举类不是普通类,不能被继承,也不能实现接口。

定义基础枚举类
public enum Week {
	MONDAY,THURSDAY,WENSDAY,....SUNDAY;
    //jvm帮我们创建了7个实例
}

调用

Week day = Week.MONDAY

和调用变量一样

定义复杂的枚举类

我们给上面的枚举类加上他们所对应的中文名称

public enum MyEnum {
	MONDAY("星期一"), THURSDAY("星期二")...SUNDAY("星期天");

	public String nameString;

	MyEnum(String CN) {
		nameString = CN;
	}

	public String getDay() {
		return nameString;
	}
}

枚举类的常用方法
toString方法和name方法

输出名称

例:

MyEnum myEnum = MyEnum.MONDAY;

System.out.println(myEnum.toString());
System.out.println(myEnum.name());

//输出
//MONDAY
//MONDAY
valueOf(String str)和valueOf(class,String str)

获得实例

例:

MyEnum getEumn = MyEnum.valueOf("THURSDAY");  //getEumn = MyEnum.THURSDAY
values()

返回一个包含全部枚举值的数组

例:

MyEnum[] weeks = MyEnum.values();
for (MyEnum week : weeks) {
	System.out.println(week);
}

//输出
//MONDAY
//THURSDAY
//WENSDAY
.
.
.
//SUNDAY    
ordinal方法

获得该枚举值所在的位置(从0开始计数)

MyEnum myEnum = MyEnum.MONDAY;
System.out.println(myEnum.ordinal());

//输出
//0
compareTo(E other)

如果常量出现在other的前面,返回负值,如果this==other,返回0,如果在后面,返回正值,返回值为索引之差

例:


MyEnum myEnum = MyEnum.MONDAY;
MyEnum myEnum2 = MyEnum.WENSDAY;
MyEnum myEnum3 = MyEnum.WENSDAY;


System.out.println(myEnum.compareTo(myEnum2)); //-2
System.out.println(myEnum2.compareTo(myEnum)); //2
System.out.println(myEnum3.compareTo(myEnum3)); //0

有了枚举类,可以让我们的代码更加的安全,也更加的方便对有限的变量进行操作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值