-
ENUM
(編程語言中的一種數據類型)
鎖定
- 中文名
- 枚舉
- 外文名
- ENUM
- 類 屬
- 數據類型
- 所屬學科
- 計算機
- 應用領域
- 計算機編程
ENUM定義説明
1. 枚舉類型定義的一般形式為:
enum 枚舉名{ 枚舉值表 };
在枚舉值表中應羅列出所有可用值。這些值也稱為枚舉元素。
例如:
該枚舉名為weekday,枚舉值共有7個,即一週中的七天。凡被説明為weekday類型變量的取值只能是七天中的某一天。
2. 枚舉變量的説明
設有變量a,b,c被説明為上述的weekday,可採用下述任一種方式:
enum weekday{sun,mon,tue,wed,thu,fri,sat}; enum weekday a,b,c; //或者為: enum weekday{sun,mon,tue,wed,thu,fri,sat}a,b,c; //或者為: enum{sun,mon,tue,wed,thu,fri,sat}a,b,c;
ENUM內存空間
ENUM賦值和使用
枚舉類型在使用中有以下規定:
2. 枚舉元素本身由系統定義了一個表示序號的數值,從0開始順序定義為0,1,2…。如在weekday中,sun值為0,mon值為1,sat值為6。
只能把枚舉值賦予枚舉變量,不能把元素的數值直接賦予枚舉變量。如一定要把數值賦予枚舉變量,則必須用強制類型轉換。
如:
a=(enum weekday)2;
其意義是將順序號為2的枚舉元素賦予枚舉變量a,相當於:
a=tue;
輸出結果: 1 monday 2 tuesday 3 wednesday 4 thursday 5 friday 6 saturday 7 sunday 8 monday 9 tuesday 10 wednesday 11 thursday 12 friday 13 saturday 14 sunday 15 monday 16 tuesday 17 wednesday 18 thursday 19 friday 20 saturday 21 sunday 22 monday 23 tuesday 24 wednesday 25 thursday 26 friday 27 saturday 28 sunday 29 monday 30 tuesday
3. 如果枚舉值與一些關鍵字衝突,例如:
enum course{begin,then,end};
(1)定義枚舉值時應避免使用常用關鍵字,可以加前綴進行區分
例如:
enum course{e_begin,e_then,e_end};
(2)可以在枚舉值前面加入枚舉類型:course::end
ENUM用法
Enum定義
public enum Season{winter,spring,summer,fall};
接口方法實現列舉
一個enum是定義一組值的對象,它可以包括零個或多個值成員.它是屬於enum類型的,一個enum對象中不可有兩個或多個相同的屬性或值.在此之前的java程序員一般是 用接口的方法實現列舉的,如 :
public interface Season{ static winter = 0; static spring = 1;//etc.. }
Enum實例
引入了enum的java的列舉的編寫方便了許多,只須定義一個enum型的對象.enum對象的值都會自動獲得一個數字值,從0開始,依次遞增.看一個比較簡單的enum實現的例子:
EnumDemo.java package net.javagarage.enums; /* We can loop over the values we put into the enum using the values() method. Note that the enum Seasons is compiled into a separate unit,called EnumDemo$Seasons.class */ public class EnumDemo{ /*declare the enum and add values to it.note that,like in#,we don't sea‘;’to end this statement and we use commas to separate the values*/ private enum Seasons{ winter,spring,summer,fall } //listthevalues public static void main(String[]args){ for(Seasons s:Seasons.values()){ System.out.println(s); } } }
運行上述代碼你會得到 以下結果:
winter
summer
fall
Enum的屬性調用:
下面的代碼展示了調用enum對象的方法,這也是它通常的用法:
package net.javagarage.enums; /* File:EnumSwitch.java Purpose:show how to switch against the values in an enum. */ public class EnumSwitch{ private enum Color{red,blue,green} //list the values public static void main(String[]args){ //refer to the qualified value doIt(Color.red); } /*note that you switch against the UNQUALIFIED name.that is,"caseColor.red:"is a compiler error*/ private static void doIt(Color c){ switch(c){ case red: System.out.println("valueis"+Color.red); break; case green: System.out.println("valueis"+Color.green); break; case blue: System.out.println("valueis:"+Color.blue); break; default: System.out.println("default"); } } }
為Enums添加屬性和方法
enums也可以象一般的類一樣添加方法和屬性,你可以為它添加靜態和非靜態的屬性或方法,這一切都象你在一般的類中做的那樣.
就是這麼的簡單.但是有一點是需要注意的,那就是enums的值列表必須緊跟在enum聲明,不然編譯時將會出錯.
Enums構造函數:
和類一樣enums也可以有自己的構造函數
儘管enums有這麼多的屬性,但並不是用的越多越好,如果那樣還不如直接用類來的直接.enums的優勢在定義int最終變量僅當這些值有一定特殊含義時.但是如果你需要的是一個類,就定義一個類,而不是enum.