1. 枚举类的常用方法
(1)String name():返回枚举常量对象名称
(2)int ordinal():返回常量对象的下标
(3)String toString():Enum父类又重写了Object类的toString,返回的也是常量对象的名称
当然,子类还可以重写
编译器会自动添加如下方法:
(1)static 枚举类型[] values():返回枚举类型的所有常量对象
(2)static 枚举类型 valueof(String name)
枚举练习:月份
(1)声明月份枚举类Month
声明一个属性,私有化,加final修饰
description(描述,例如:JANUARY的description为一月,FEBRUARY的description为二月,以此类推)
声明一个有参构造Month(String description),创建12个常量对象,常量对象的名称如下
JANUARY,FEBRUARY,MARCH,APRIL,MAY,JUNE,JULY,AUGUST,SEPTEMBER,OCTOBER,NOVEMBER,DECEMBER
声明public static Month getByValue(int value):返回对应月份值的枚举对象,例如实参传入1,则返回JANUARY对象
声明public int length(boolean leapYear):返回这个月的总天数,如果当前对象是FEBRUARY,并且leapYear是true,则返回29,否则返回28
重写toString():返回对象信息,例如:1->JANUARY->一月份
(2)在测试类中,从键盘输入年份和月份值。获取对应的月份对象,并打印月份对象,并获取月份总天数
代码为:
public enum Month {
JANUARY("一月"),
FEBRUARY("二月"),
MARCH("三月"),
APRIL("四月"),
MAY("五月"),
JUNE("六月"),
JULY("七月"),
AUGUST("八月"),
SEPTEMBER("九月"),
OCTOBER("十月"),
NOVEMBER("十一月"),
DECEMBER("十二月");
private final String description;
Month(String description) {
this.description = description;
}
public static Month getByValue(int value){
Month[] months = Month.values();
return months[value-1];
}
public int length(boolean leapYear){
switch(this){
case FEBRUARY:
return leapYear?29:28;
case APRIL:
case JUNE:
case SEPTEMBER:
case NOVEMBER:
return 30;
default:
return 31;
}
}
@Override
public String toString() {
return (ordinal()+1)+"->" +name()+
"->" + description ;
}
}
测试类:
import java.util.Scanner;
public class TestMonth {
public static void main(String[] args) {
Scanner input = new Scanne