第四节:枚举类型

第四节:枚举类型

1.枚举(enum全称为enumeration)类型是Java 5新增的类型,存放在java.lang包中,允许用常量来表示特定的数据片断,而且全部都以类型安全的形式来表示。
2.基本方法:values():返回 enum 实例的数组,而且该数组中的元素严格保持在 enum 中声明时的顺序
name():返回实例名。
ordinal():返回实例声明时的次序,从0开始。
getDeclaringClass():返回实例所属的 enum 类型。
equals() :判断是否为同一个对象。可以使用 == 来比较enum实例。
3.应用:public enum WeekDayEnum{
MONDAY,
TUESDAY,
WENDESDAY,
FRIDAY,
SATURDAY,
SUNDAY;
}
WeekDayEnum mondayEnum = WeekDayEnum.MONDAY;
Systen.out.println(mondayEnum);
//输出: MONDAY
在java5之前, switch 的值只能够是简单类型,比如 int、byte、short、char, 有了枚举类型之后,就可以使用对象了。
switch(mondayEnum){
case MONDAY:
Systen.out.println( WeekDayEnum.MONDAY);
}
4.遍历:使用values()方法,讲枚所有元素转换为数组

5.枚举定制:
Java枚举中允许定义属性和方法,但必须在枚举实例序列的最后一个分号后再添加。Java 要求必须先定义枚举实例在前面。

注意:枚举的构造方法默认且只能是private的。
6.父类Enum中的定义的方法只有toString方法没有使用final修饰,因此只能覆盖toString方法。
7.由于Java单继承的原因,enum类并不能再继承其它类,但并不妨碍它实现接口,因此enum类同样是可以实现多接口的。
因为父类enum已经继承了,java.lang.Enum,类中可以定义抽象方法,实现一到多个接口,可以定义方法和属性。
8.使用枚举单例的优势:1.自由序列化
枚举单例是饿汉式的 2.保证只有一个实例(即使使用反射机制也无法多次实例化一个枚举量)
3.线程安全

EnumMap:

EnumSet

使用规范:
1.枚举类型对象之间的值比较,可以使用==直接来比较值是否相等的,不是必须使用equals方法。由于 enum 类型的值实际上是通过运行期构造出对象来表示的,每个虚拟机都会构造出一个同义的枚举对象。因而在做比较操作时候就需要注意,如果直接通过使用等号 ( ‘ == ’ ) 操作符,这些看似一样的枚举值一定不相等,因为这不是同一个对象实例。
2.enum 类型不支持 public 和 protected 修饰符的构造方法,因此构造函数一定要是 private 或 friendly 的。也正因为如此,所以枚举对象是无法在程序中通过直接调用其构造方法来初始化的。
2.定义 enum 类型时候,如果是简单类型,那么最后一个枚举值后不用跟任何一个符号;但如果有定制方法,那么最后一个枚举值与后面代码要用分号’;'隔开,不能用逗号或空格。

缺点:相对于普通的常量会占用更多的内存。
优点:将常量组织起来统一进行管理。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值