枚举(enum)
枚举就是一组常量的集合
可以理解为:枚举是一个特殊的类,里面存放一组特定且有限的对象
枚举的实现【两种】
- 自定义枚举
- 使用enum关键字实现枚举
1.自定义枚举
- 枚举类不需要set方法,构造器私有化,因为枚举都是只读的
- 所有的枚举对象/属性,都用final+static修饰
- 所有的枚举对象的名称都用大写(常量命名规范)
- 枚举对象根据需要也可以有多个属性
class enum_{
private String name;
//1.私有化构造方法
private enum_(String name){
this.name = name;
}
//2.不写set方法
public String getName(){
return name;
}
//3.创建枚举对象,大写命名
public final static enum_ JACK = new enum_("jack");
public final static enum_ TOM = new enum_("tom");
}
2.enum关键字实现枚举
- 将类的class替换为enum
- 枚举对象:对象名(参数列表)
- 枚举对象的名称都用大写
- 枚举对象必须在类的第一行
- enum类实际上是继承Enum类,而且是final类
enum enum_{
//3.枚举对象必须在类的第一行
JACK("jack"),TOM("tom");
private String name;
//1.私有化构造方法
private enum_(String name){
this.name = name;
}
//2.不写set方法
public String getName(){
return name;
}
}
3.enum的常用方法
System.out.println("");
class test{
pubilc stataic void main(String[] args){
enum_ jack = enum_.JACK;
//1.name():获取枚举对象的对象名,也就是jack
System.out.println(jack.name());//这里输出JACK,
//2.ordinal():获取枚举对象的下标,从0开始
System.out.println(jack.ordinal);//这里输出0,
//3.values():获取所有枚举对象,返回一个数组
enum_[] values = enum_.values();//这个方法比较特殊,由类名点出来
for(enum_ en: values){
System.out.println(en);
}//这里输出所有枚举对象
//4.compareTo():返回两个枚举对象的位置差,后-前
System.out.println(jack.compareTo(enum_.TOM));//这里输出1
//5.valueOf():将枚举对象转为字符串
System.out.println(enum_.valueOf("JACK"));//这里输出JACK的对象
//6.equals():判断两个枚举对象的值是否相同
System.out.println(jack.equals(enum_.TOM));//这里输出false
}
}
enum enum_{
JACK("jack"),TOM("tom");
private String name;
private enum_(String name){
this.name = name;
}
public String getName(){
return name;
}
}
4.细节
- enum类不能继承其他类,因为已经默认继承了Enum类
- enum可以实现接口