博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java基础教程(15)--枚举类型
阅读量:6983 次
发布时间:2019-06-27

本文共 1973 字,大约阅读时间需要 6 分钟。

  枚举类型定义了一个枚举值的列表,每个值是一个标识符。例如,下面的语句声明了一个枚举类型,用来表示星期的可能情况:

public enum Day {    SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY}

  实际上,这个声明定义的类型是一个类,它有7个实例。因此,在比较两个枚举类型的值时,永远不需要调用equals,直接使用“==”就可以了。

  枚举类型的值类似于一个常量,因此,按照惯例拼写都使用大写字母。而枚举类型的命名则与类名的命名规则一致。
  一旦定义了枚举类型,就可以使用这个类型来声明变量:

Day day;

  变量day只能是枚举类型Day中的一个值或null。可以使用下面的语法访问枚举值:

EnumName.ValueName

  例如,下面的语句将枚举值赋给变量day:

day = Day.SUNDAY;

  可以在一个枚举类型的对象上使用下面的方法:

  • public String name();

  返回枚举值的名字。

  • public int ordinal();

  返回枚举值的序号。枚举类型中的第一个值序号为0,第二个值序号为1,依次类推。

  下面的例子展示了枚举类型的使用:

public class EnumDemo {    enum Day {        SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY    }    public static void main(String[] args) {        Day day1 = Day.FRIDAY;        Day day2 = Day.THURSDAY;        System.out.println("The name of day1 is" + day1.name());        System.out.println("The name of day2 is" + day2.name());        System.out.println("The ordinal of day1 is" + day1.ordinal());        System.out.println("The ordinal of day2 is" + day2.ordinal());    }}

  这个程序的输出如下:

The name of day1 is FRIDAYThe name of day2 is THURSDAYThe ordinal of day1 is 5The ordinal of day2 is 4

  由于枚举类型是Object类的子类和Comparable接口的实现类,因此可以对枚举对象调用Object类的方法,例如equals,toString等,也可以调用Comparable接口的compareTo方法。

  在switch-case语句中使用枚举类型时,case标签可以是省略枚举类型的枚举值,例如:

switch (day) {    case SUNDAY:        // process SUNDAY    case MONDAY:        // process MONDAY    ...}

  可以定义具有数据域、构造器和方法的枚举类型:

public enum Day {    SUNDAY("星期天"), MONDAY("星期一"), TUESDAY("星期二"), WEDNESDAY("星期三"),    THURSDAY("星期四"), FRIDAY("星期五"), SATURDAY("星期六");    public String description;    private Day(String description) {        this.description = description;    }    public String getDescription() {        return description;    }}

  需要注意的是,当枚举类型中除了枚举值的声明外还有其他部分时,枚举值的声明必须是第一条语句,且结尾处需要使用分号。此外,由于枚举值的数量是在编译期就确定的,因此不建议创建新的枚举值,所以Java语法要求枚举类型的构造方法是私有的以避免被直接调用。private修饰符可省略,这种情况下,构造方法也会被默认为私有的。

转载于:https://www.cnblogs.com/maconn/p/10163287.html

你可能感兴趣的文章
示波器测量电源的纹波
查看>>
自定义ListBox,实现单多选切换(复选框)
查看>>
软件测试2019:第八次作业
查看>>
Centos下安装FTP并进行虚拟用户访问方式配置
查看>>
python day09
查看>>
拆系数FFT及其部分优化
查看>>
cocos2dx3.8 ios打包脚本编写
查看>>
wordpress搭建博客上传begin主题The themes is locked to another domain
查看>>
2019-04-16 SpringMVC 学习笔记
查看>>
C10K问题
查看>>
慕课网3-13编程练习:采用flex弹性布局制作页面主导航
查看>>
线程中死锁的demo
查看>>
canvas-7globleCompositeOperation.html
查看>>
Java并发(具体实例)——几个例子
查看>>
【待补】java开发Web Service
查看>>
两个有用的数组扩展方法
查看>>
英语发音规则---H字母
查看>>
js进阶 10-11/12 表单伪类选择器的作用
查看>>
C#中Invoke的用法
查看>>
pxe无人值守安装操作系统
查看>>