Java面向?qū)ο蠡A(chǔ)知識之枚舉
一、枚舉的定義
枚舉是一組命名整型常量。枚舉類型是使用enum關(guān)鍵字聲明的。
C# 枚舉是值類型。換句話說,枚舉包含自己的值,且不能繼承或傳遞繼承。
二、枚舉的聲明
聲明枚舉的一般語法:
enum <enum_name>
{
enumeration list
};
其中,
enum_name指定枚舉的類型名稱。enumeration list是一個用逗號分隔的標(biāo)識符列表。
枚舉列表中的每個符號代表一個整數(shù)值,一個比它前面的符號大的整數(shù)值。默認情況下,第一個枚舉符號的值是 0.例如:
enum Day { Sun, Mon, tue, Wed, thu, Fri, Sat };
在編譯枚舉類型時,會把每個符號轉(zhuǎn)換成類型的一個常量字段很一個int32的公共實例字段,不夠后者不能通過代碼調(diào)用。
因為枚舉的符號是一個常量字段,如果在不同的程序集引用,可能會出現(xiàn)一些版本問題,

每個枚舉都有一個基礎(chǔ)類型, 包含 byte,sbyte,short,ushort,uint,long ,ulong, 和int (最常用,C#默認的類型)
三、枚舉的轉(zhuǎn)換
枚舉轉(zhuǎn)換成整數(shù)
Day today = Day.Wed; int dayNumber = (int)today;
枚舉轉(zhuǎn)換成字符串
Day today = Day.Wed; string todayStr = today.ToString();
四、枚舉的方法
枚舉的主要三個方法:Enum.GetName() 、Enum.GetNames()、Enum.GetValues()
Day today = Day.Wed; string name = Enum.GetName(typeof(Day), 3); Enum.GetNames(typeof(Day)) Enum.GetValues(typeof(Day))
GetName:獲取單個枚舉的名稱
GetNames:獲取所有枚舉的名稱
GetValues:獲取所有枚舉的值
五、標(biāo)志枚舉(二進制枚舉)
定義枚舉時,添加Flags特性,之后便可以對這些值執(zhí)行AND、OR、NOT、XOR按位運算
public enum MyEnum
{
MyEnum1 = 1, //0x1
MyEnum2 = 1 << 1, //0x2
MyEnum3 = 1 << 2, //0x4
MyEnum4 = 1 << 3, //0x8
MyEnum5 = 1 << 4, //0x10
MyEnum6 = 1 << 5, //0x20
MyEnum7 = 1 << 6 //0x40
}
此時可以使用位移運算方便的獲取多個枚舉的組合變量:
MyEnum myEnum = MyEnum.MyEnum1 | MyEnum.MyEnum2; myEnum |= myEnum | MyEnum.MyEnum3;
或在組合中刪除其中一項枚舉:
myEnum ^= MyEnum.MyEnum1; myEnum &= ~MyEnum.MyEnum2;
需要判斷是否包含某一枚舉值時,可以使用以下方法判斷:
(curMyEnum & MyEnum.Enum1) > 0
并集 &交集 ^差集
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
關(guān)于MyBatis Plus中使用or和and問題
這篇文章主要介紹了關(guān)于MyBatis Plus中使用or和and問題,需要的朋友可以參考下2020-12-12
SpringMVC中DispatcherServlet的HandlerMapping詳解
這篇文章主要介紹了SpringMVC中DispatcherServlet的HandlerMapping詳解,上回說的Handler,我們說是處理特定請求的,也就是說,不是所有的請求都能處理,那么問題來了,我們怎知道哪個請求是由哪個Handler處理的呢,需要的朋友可以參考下2023-10-10
SpringBoot Admin健康檢查功能的實現(xiàn)
admin主要就是告訴運維人員,服務(wù)出現(xiàn)異常,然后進行通知(微信、郵件、短信、釘釘?shù)龋┛梢苑浅?焖偻ㄖ竭\維人員,相當(dāng)報警功能,接下來通過本文給大家介紹SpringBoot Admin健康檢查的相關(guān)知識,一起看看吧2021-06-06
Java 數(shù)據(jù)結(jié)構(gòu)進階二叉樹題集上
二叉樹可以簡單理解為對于一個節(jié)點來說,最多擁有一個上級節(jié)點,同時最多具備左右兩個下級節(jié)點的數(shù)據(jù)結(jié)構(gòu)。本文將帶你通過實際題目來熟練掌握2022-04-04
javaweb設(shè)計中filter粗粒度權(quán)限控制代碼示例
這篇文章主要介紹了javaweb設(shè)計中filter粗粒度權(quán)限控制代碼示例,小編覺得還是挺不錯的,需要的朋友可以參考。2017-10-10
基于Java實現(xiàn)的圖的廣度優(yōu)先遍歷算法
這篇文章主要介紹了基于Java實現(xiàn)的圖的廣度優(yōu)先遍歷算法,需要的朋友可以參考下2014-07-07

