1. 程式人生 > >Java開發知識之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():返回列舉陣列. 可以進行遍歷列舉.並且輸出結果.