zoukankan      html  css  js  c++  java
  • Java开发知识之Java的枚举

            Java开发知识之Java的枚举

    一丶什么是枚举

      枚举可以理解为就是常量,在Java中我们定义常量.都是用 final语句. C++中都是用const关键字.

    枚举跟C++概念都是一样的.就是特定的常量而已.

    二丶Java中的枚举

        java中的常量.一般都是final定义.但是我们讲过.final定义的常量.初始化的时候可以每次给不同的值.

    所以加上static 才能保证其内存不会改变.一般常量都是定义在接口中给我们使用的.

    可能需要连续定义.

    例如:

      public final static int a = 1;

      public final static int b = 2;

      public final static int c = 3;

    ....

      枚举就是管理一组常量的一个结构而已.

    据图语法如下:

        

    权限修饰符 enum关键字 枚举名称{
         枚举常量,
         枚举常量,
         枚举常量  
    }

    枚举常量的定义

      枚举名称  常量;

    具体使用如下代码:

    类代码:

      

    public class MyTestenum {
    
        public MyTestenum() {
            // TODO 自动生成的构造函数存根
        }
        public enum NUMBER{
            N_NUMBER1,
            N_NUMBER2,
            N_NUMBER3
        }
    
    }

    外部new对象.并且使用enum定义常量.

    public static void main(String[] args) throws MyException {
            MyTestenum t = new MyTestenum();
            NUMBER n = NUMBER.N_NUMBER1; //定义枚举常量n,必须初始化,可以为null也可以是枚举中的常量.
            switch(n) {
            case N_NUMBER1:
                System.out.println("1");
                break;
            case N_NUMBER2:
                System.out.println("2");
                break;
                
            case N_NUMBER3:
                System.out.println("3");
                break;
            }
        }

    可以看到.我们可以直接使用 枚举 定义枚举变量. 并且赋值其中一个枚举常量.

    但是我们又有疑问了. 我们的枚举常量并没有初始化.但是为什么程序不出错.而且还打印了1;

    原因是. 枚举常量.默认就是从0开始.

    三丶枚举作为方法传递

      我们可以定义枚举常量.规定只接受什么类型的枚举.

    public class MyTestenum {
    
        public MyTestenum() {
            // TODO 自动生成的构造函数存根
        }
         enum NUMBER{
            N_NUMBER1 ,
            N_NUMBER2 ,
            N_NUMBER3 
        }
        
        public static void doit(NUMBER c) {
            switch(c) {
            case N_NUMBER1:
                break;
            case N_NUMBER2:
                break;
            case N_NUMBER3:
                break;
            }
        }
    
    }

    使用:

      

    public static void main(String[] args) throws MyException {
            MyTestenum.doit(NUMBER.N_NUMBER1);
            
            
        }

    我们要传入枚举常量才可以.

    四丶枚举的高级用法

        我们知道.JAVA是一个面向对象的程序. 我们定义的枚举.其实已经默认继承了一个类

    枚举类型可以看做一个类,其中的成员也都被默认使用 final public static 修饰了.所以枚举名称(变量)

    其实就是一个引用.他继承了父类.则有父类的方法可以使用.

    常用方法;

      

    代码举例以values()为例.遍历枚举成员

        public static void main(String[] args) throws MyException {
            MyTestenum.doit(NUMBER.N_NUMBER1);
            NUMBER n = null;
            for(int i = 0; i < n.values().length;i++) {
                System.out.print(" " + n.values()[i]);
            }
            
        }

    使用方法返回了一个数组. 又使用链式方法.调用了 length求数组成员. 下面则进行遍历.

    五丶知识总结

        1.定义枚举关键字

          enum 名称{成员,成员};

          1.枚举定义的成员. 默认都是 public static  final 修饰的. 其成员是一个常量.且内存不可以更改.

        2.枚举方法.

          枚举可以当参数传递给方法使用.

        3.枚举高级用法

          枚举可以看成一个类.他的成员都是它的实例. 它集成子java.lang.Enum类. 我们可以使用方法进行遍历.

    例如values():返回枚举数组. 可以进行遍历枚举.并且输出结果.

      

      

  • 相关阅读:
    Java线程之Callable和Future
    Java四种线程池newCachedThreadPool,newFixedThreadPool,newScheduledThreadPool,newSingleThreadExecutor
    hdu 6201 transaction transaction transaction
    三分钟读懂TT猫分布式、微服务和集群之路
    springcloud(十):服务网关zuul初级篇
    springcloud(九):配置中心和消息总线(配置中心终结版)
    springcloud(八):配置中心服务化和高可用
    springcloud(七):配置中心svn示例和refresh
    springcloud(六):配置中心git示例
    最简单的SpringBoot整合MyBatis教程
  • 原文地址:https://www.cnblogs.com/iBinary/p/9813925.html
Copyright © 2011-2022 走看看