java枚举菜鸟教程_Java教程--枚举类型使用方法详细讲解

d9dee9a1bde60823e7ba67b2f62412da.png

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

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 FRIDAY

The name of day2 is THURSDAY

The 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修饰符可省略,这种情况下,构造方法也会被默认为私有的。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值