目录

枚举类

概念:

特点:

 enum关键字实现枚举

 注意事项:

enum枚举类常用方法


枚举类

概念:

枚举类就是把当某一个类只有几种情况的时候,把它的这几种情况一一列举出来,并且不可再修改和创建新的对象,比如季节类,只有春夏秋冬四种情况,那么就可以直接创建好四个对象,可以随时调用但是不能修改。

特点:

1.构造器私有化,不允许在创建对象

2.本类内部创建好一组对象,如【春,夏,秋,冬】

3.对外暴露对象,用public static final修饰对象,让外部可以调用但是不可以修改,并且调用时不会加载类

4.可以提供get方法,但是不能提供set方法

 enum关键字实现枚举

1.创建枚举类时,用enum代替class

2.创建对象时,可以直接用常量名(实参列表)例如SPRING("春天")简化了创建对象的过程

3.如果有多个对象,那他们直接用逗号分隔,最后采用分号结尾

4.如果用enum实现枚举,那么定义对象必须写在最前面

5.当使用无参构造器创建枚举对象时,则参数列表和小括号都可以省略

public enum Season {
    SPRING("春天"), SUMMER("夏天"), AUTUMN("秋天"), WINTER("冬天");

    private String name;

    private Season(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    @Override
    public String toString() {
        return "Season{" +
                "name='" + name + '\'' +
                '}';
    }
}

 注意事项:

因为是常量对象,所以对象名一般用大写字母

当我们使用enum创建枚举类时,它默认继承Enum类,所以不能再继承别的类,但是可以实现接口

enum枚举类常用方法

因为默认继承Enum类,所以枚举对象可以调用Enum中的成员方法

1.toString,Enum类中已经重写过了,直接使用时返回的是当前对象名,子类可以重写方法用于返回对象的属性信息 

2.name:返回当前常量名(对象名),子类中不能重写

3.ordinal:返回当前对象的位置号,就是按顺序往后排的号码,从0开始计算

4.values:返回当前枚举中的所有常量

用增强for循环搭配使用

//创建Season类数组,用values方法储存进去
Season[] values = Season.values();
        //把数组values中的值依次赋值给Season类变量season,直至数组结束
        for (Season season : values){
            System.out.println(season);
        }

增强for循环是指遍历数组时,会把数组值从小到大依次赋值给前面的变量,直到取出完毕

 5.valueOf:将字符串转换成枚举对象,要求字符串必须是已有的常量名,否则报异常

6.compareTo:比较两个枚举常量的编号,方法体就是前面的编号减去后面的编号