zoukankan      html  css  js  c++  java
  • 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如何导入本地项目

  • 相关阅读:
    那么这几天都是自己和工作上的事情比较零零散散
    在大家都返现的时候却有人什么都不奉献
    今天觉得自己好像比较紧张
    今天是下午有雨
    今天是星期五,上班已经三个礼拜了
    今天晚上控制电脑前,要提前开机
    其实对于家里的电脑就是硬盘不太好
    家里主要忙着建立房子
    今天装了一个RTI工具
    昨天已经开始讲业务的部分
  • 原文地址:https://www.cnblogs.com/occlive/p/13362034.html
Copyright © 2011-2022 走看看