Java基础——枚举

枚举

引入

在Java程序中,我们通常通过声明初始化常量或变量来满足程序的需求。

但是有些方法在运行时,它需要的数据不能是任意的,必须是一定范围内的值

通过枚举,我们把值规定到固定范围,不用担心代码编写失误或超出范围;
同时,枚举可以在整个程序内调用,不用重复编写,提高代码复用率;
此外枚举也能让代码整体更直观的、可读性。

枚举的应用场景:错误码,状态机。

定义

  • 不能继承

    • Java规定单继承,enum已经继承了java.lang.Enum
  • 可以实现接口

    • Java中一个类可以实现多个接口
//权限修饰符 enum 枚举名 implements 接口名{
//      元素1,元素2...;//分号可有可无
//}

public enum Grade{
      A,B,C,D,E;
}

成员

枚举成员同样是变量(遵循标识符规定)
Java 不允许使用 = 为枚举常量赋值
//不能以数字开头
public enum Num{
      1,2,3;                    
}

//不能用=赋值
public enum Grade{
      A = 1,B = 2;
}

本质

除了不能继承,基本上可以将 enum 看做一个常规的类

Java的enum本质是一个class(类)

  • 枚举类型,编译后就是.class
  • 枚举成员是枚举对象,枚举对象均为静态常量(不可改变)
    //第一种写法
    public enum Color{
          RED,BLACK,WHITE;  
    }
    
    //第二种写法
    public enum Color{
          RED(),BLACK(),WHITE();  
    }
    
  • 枚举可添加构造方法
    public enum Color{
          RED("red color",0),BLACK("black color",1),WHITE("white color",2);
          //必须加,enum不能实例化对象
          Color(String str,int num){
                name = str;
                id = num;
          }
          String name;
          int id;
    }
    

区别

  • 枚举不可以实例化
    • 自动为构造方法加上private,私有属性
  • 枚举成员变量只有get方法

特点

  • 数据集
    • 数值稳定
    • 元素个数有限
  • 所有枚举类继承Enum类的方法
    方法名 参数 返回值 作用
    compareTo() 枚举值 int 当前枚举元素在该元素的位置 -表示左 (+)表示右
    equals() object boolean 判断是否是当前枚举元素
    hashcode() int 获取枚举值的哈希码
    ordinal() int 获取枚举元素所在位置
    name() String 返回实例名
    toString() String 枚举元素转为String
    getClass() class 获取当前枚举元素的类
    getDeclaringClass()) class 获取定义枚举的类
  • Java 不允许使用=为枚举常量赋值。
  • 可通过values()返回枚举实例数组
  • 可通过 ==比较enum实例

博客相关java项目:查看Github项目
对应github项目:MeiJu
导入项目的方法: Java基础——Java如何导入本地项目

posted @ 2020-07-22 22:30  不爱学习的小策  阅读(325)  评论(0编辑  收藏  举报