1. 程式人生 > >Java開發知識之Java的枚舉

Java開發知識之Java的枚舉

可能 連續 cas 總結 exc 自動 名稱 參數傳遞 c++

        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開發知識之Java的枚舉