JAVA从小白到大牛(15)--------枚举类

15.1 枚举概述

需要定义一组相关常量,为了提高程序可读性,可以把一组常量放置在一起,由统一的一个类型管理,

这个类型就是枚举类型(Java5之前没有)

JAVA从小白到大牛(15)--------枚举类_第1张图片

 

 

不用枚举类型时:

JAVA从小白到大牛(15)--------枚举类_第2张图片

JAVA从小白到大牛(15)--------枚举类_第3张图片

 

使用一组常量的缺点是:

     1. 类型不安全

           JAVA从小白到大牛(15)--------枚举类_第4张图片

     2. 程序调试不方便

 

Java5之后 枚举类型的特点

     1. Java枚举类型是一种类,是引用类型,具 有了面向对象特性,可以添加方法和成员变量等

     2. Java枚举类型父类是 java.lang.Enum,不需要显式声明

     3. Java枚举类型可以实现接口,与类实现接口类似

     4. Java枚举类型不能被继承,不存在子类

     

 

15.2 枚举类声明

声明枚举类型语法:

[public] enum 枚举名{

       枚举常量列表

}

访问控制级别有两种:public公有的,默认的

 

15.2.1 最简单形式的枚举类

JAVA从小白到大牛(15)--------枚举类_第5张图片

JAVA从小白到大牛(15)--------枚举类_第6张图片

这里就限制了 day只能是枚举类中的值,不会出现非法赋值

 

 

15.2.2 枚举类中成员变量和成员方法

静态或者实例成员变量,也可以有静态或实例的方法,但不能有抽象方法

JAVA从小白到大牛(15)--------枚举类_第7张图片

JAVA从小白到大牛(15)--------枚举类_第8张图片

 

JAVA从小白到大牛(15)--------枚举类_第9张图片

 

 

 

15.2.3 枚举类构造方法

枚举类型中的构造方法是 私有的

JAVA从小白到大牛(15)--------枚举类_第10张图片

 

在外部不可见,目的就是为了防止在外部实例化

JAVA从小白到大牛(15)--------枚举类_第11张图片

 

有了构造方法,内部实例化语句也要随之改变

JAVA从小白到大牛(15)--------枚举类_第12张图片

 

调用 toString()之后

JAVA从小白到大牛(15)--------枚举类_第13张图片

JAVA从小白到大牛(15)--------枚举类_第14张图片

 

15.3 枚举常用方法

1. int ordinal():

    返回枚举常量的顺序。这个顺序根据枚举常量声明的顺序而定,顺序从零开始

2. 枚举类型[] values():

    静态方法,返回一个包含全部枚举常量的数组

3. 枚举类型 valuesOf(String str):

     静态方法,str是枚举常量对应的字符串,返回 一个包含枚举类型

 

JAVA从小白到大牛(15)--------枚举类_第15张图片

JAVA从小白到大牛(15)--------枚举类_第16张图片

JAVA从小白到大牛(15)--------枚举类_第17张图片

 

枚举类型比较时。equals() 和 == 一样,由于枚举类型中的常量值永远只有一个实例,

从这一点看,枚举类型采用的是单例设计模式

java.lang.Enum()类   源码

你可能感兴趣的:(JAVA编程基础)