java复习——枚举

165 阅读2分钟

枚举(enum)

枚举就是一组常量的集合

可以理解为:枚举是一个特殊的类,里面存放一组特定且有限的对象

枚举的实现【两种】

  1. 自定义枚举
  2. 使用enum关键字实现枚举

1.自定义枚举

  1. 枚举类不需要set方法,构造器私有化,因为枚举都是只读的
  2. 所有的枚举对象/属性,都用final+static修饰
  3. 所有的枚举对象的名称都用大写(常量命名规范)
  4. 枚举对象根据需要也可以有多个属性
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关键字实现枚举

  1. 将类的class替换为enum
  2. 枚举对象:对象名(参数列表)
  3. 枚举对象的名称都用大写
  4. 枚举对象必须在类的第一行
  5. 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的常用方法

image-20230112214720983

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.细节

  1. enum类不能继承其他类,因为已经默认继承了Enum类
  2. enum可以实现接口