枚举,是JDK1.5引入的新特性,可以通过关键字enum来定义枚举类。
- 枚举类是一种特殊的类,它和普通类一样可以使用构造器、定义成员变量和方法,也能实现一个或多个接口。
- 枚举其实也是一种类,同时还是一个final修饰的类。
- 枚举类型都会默认继承一个父类型(java.lang.Enum),这还是一个抽象的泛型类。
- 枚举中所定义的对象,其实就是类里面的public static final修饰的常量,并且这些常量会在静态代码块中做初始化。
- 枚举类型中还一个默认的私有构造器,说明在枚举类的外面并不能自己去创建枚举类型的对象。
- 枚举类型中还有默认添加进来的方法:
values()方法,可以返回这个枚举类型的所有对象,返回类型是数组。
valueOf(String str)方法,通过一个字符串可以返回枚举对象,这个字符串参数就是枚举对象的名字。 - 枚举类型会从父类中继承过来一些方法:
(1)String name(),返回这个枚举对象的名字;
(2)int ordinal(),返回这个枚举对象的编号,默认从0开始。 - 枚举类中可以定义属性和方法、构造器、抽象方法、接口。一个类型的对象个数和名称能固定下来的,可以考虑使用枚举类型来表示。状态码–>定义成枚举类。(404-页面找不到)
- 获取枚举对象的三种方式:
(1)直接使用类名访问类中定义的对象。
(2)通过字符串参数的改变,可以获取到指定的枚举类中指定的对象,调用valueOf方法。
(3)通过字符串确定是哪一个枚举类型,哪一个枚举对象,再通过字符串确定。 - 枚举练习题:
(1)编写关于一个星期week的枚举代码,枚举值为英文名称的星期一到星期天,打印中文的格式的星期名称。
(2)输出以下枚举类型对象的个数。
package com.briup.day06;
/*
* 枚举练习
*/
public class EnumTest {
public static void main(String[] args) {
System.out.println(Week.Monday.name);
System.out.println(Week.Tuesday.name);
System.out.println(Week.Wednesday.name);
System.out.println(Week.Thursday.name);
System.out.println(Week.Friday.name);
System.out.println(Week.Saturday.name);
System.out.println(Week.Sunday.name);
Season[] seasons = Season.values();
System.out.println("Season类型对象的个数:"+seasons.length);
}
}
//星期Week枚举类
enum Week {
Monday("星期一"),
Tuesday("星期二"),
Wednesday("星期三"),
Thursday("星期四"),
Friday("星期五"),
Saturday("星期六"),
Sunday("星期天");
public String name;
Week(String name) {
this.name=name;
}
}
//季节Season枚举类
enum Season {
SPRING,SUMMER,AUTUMN,WINTER;
}