Enum枚举

大家好,我是IT修真院深圳分院第5期学员,一枚正直善良的JAVA程序员。

今天给大家分享一下,修真院官网JAVA任务基础中,Java基础之枚举类?


1.背景介绍

枚举(enum),是指一个经过排序的、被打包成一个单一实体的项列表。

一个枚举的实例可以使用枚举项列表中任意单一项的值。

枚举在各个语言当中都有着广泛的应用,通常用来表示诸如颜色、方式、类别、状态等等数目有限、形式离散、表达又极为明确的量。

枚举类型是Java 5中新增特性的一部分,在Java中它是一种特殊的数据类型,

之所以特殊是因为它既是一种类(class)

类型却又比类类型多了些特殊的约束,但是这些约束的存在也造就了枚举类型的简洁性、安全性以及便捷性。

2.知识剖析

值类型枚举 (enumeration),是值类型的一种特殊形式,

它从 System.Enum 继承,并为基础基元类型的值提供备用名称。枚举类型有名称、基础类型和一组字段。

基础类型必须是一个内置的有符号(或无符号)整数类型(如 Byte、Int32 或 UInt64)。

字段是静态文本字段,其中的每一个字段都表示常数。

所使用的语言给每个字段都分配一个基础类型的特定值。

java中的枚举类可以有构造函数、可以实现接口,但不能继承任何类,其在编译以后默认继承jdk内部的枚举类。

3.常见问题

什么时候需要使用枚举

4.解决方案

当我们对于一些比较固定的常量的时候,使用枚举是很好的方法

在程序中这样的“数据集”,它们的数值在程序中是稳定的,而且“数据集”中的元素是有限的。

例如星期一到星期日七个数据元素组成了一周的“数据集”,春夏秋冬四个数据元素组成了四季的“数据集”。

范围限定的作用比较重要,多路分发,应该属于应用,int也能实现的。

比如描述红绿灯,如果用整型来表示,可以用-1表示红灯,1表示绿灯,0表示黄灯。

如果能够严格遵守{-1,0,1}这么个取值范围,那也没问题,但是这是需要程序保障,在运行时,不会出现-2、2这样越界的应

用。如果用枚举,限定为enum{RED,GREEN,YELLOW},这样就不可能出现越界了(至少在编译期就提示错误了)。

对于上述这种情况就比较适合使用枚举了

5.编码实战

这里我们看看示例

enum 的语法结构尽管和 class 的语法不一样,但是经过编译器编译之后产生的是一个class文件。

该class文件经过反编译可以看到实际上是生成了一个类,该类继承了java.lang.Enum 。

所以,实际上 enum 就是一个 class,只不过 java 编译器帮我们做了语法的解析和编译而已。

可以把 enum 看成是一个普通的 class,它们都可以定义一些属性和方法,

不同之处是:enum 不能使用 extends 关键字继承其他类,因为 enum 已经继承了 java.lang.Enum(java是单一继承)。

6.扩展思考

在例子中,以逗号隔开的,最后以分号结尾的,这部分叫做,这个枚举的实例。

也可以理解为,class new 出来的实例对象。这下就好理解了。只是,class,new对象,

可以自己随便new,想几个就几个,而这个enum关键字,他就不行,他的实例对象,

只能在这个enum里面体现。也就是说,他对应的实例是有限的。这也就是枚举的好处了,限制了某些东西的范围

7.参考文献

http://blog.csdn.net/qq_27093465/article/details/52180865

百度,其他blog

8.更多讨论

1.枚举类是有序的吗?

使用枚举实例方法ordinal可以看出枚举类是有序的,而且是根据其在列表的位置决定其序号,序号以0为起始点。


2.java中的枚举类和常量类区别在哪儿?

枚举的本质是类,常量的本质只是一个值。枚举里面可以设计方法来返回值,但是常量一旦声明就无法改变。

3.枚举有哪些使用场景。

1、作为普通的常量使用,如星期、季节、颜色、城市等等;通常配合switch语句使用。 
2、往枚举中添加变量、构造函数、以达到灵活获取指定值的目的(注: Java 要求必须先定义 enum 实例,否则编译会报错);通常用于一些业务系统中定义一些固定值,如用于匹配db中的字段值等。 

3、往枚举中添加自己特定方法,以实现自己所需的相关业务逻辑。 

4.java中的枚举还有许多其它的用法,如重写toString()、equals()等方法,实现接口、枚举Map等等,

5.总结:

1、所有枚举类都是继承java.lang.Enum类,可以把 enum 看成是一个普通的 class,它们都可以定义一些属性和方法,不过,因为java是单继承,所以枚举不能再继承其它类,但枚举可以实现接口。 
  2、不使用枚举也可以用其它方式代替实现类似的效果,而灵活地运用枚举可以带来许多便利,但也切忌为了用枚举而用枚举,这样反而可能带来不利的影响。 

视频地址:小课堂视频

PPTPPT

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值