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

每個(gè)枚舉都有一個(gè)基礎(chǔ)類型, 包含 byte,sbyte,short,ushort,uint,long ,ulong, 和int (最常用,C#默認(rèn)的類型)
三、枚舉的轉(zhuǎn)換
枚舉轉(zhuǎn)換成整數(shù)
Day today = Day.Wed; int dayNumber = (int)today;
枚舉轉(zhuǎn)換成字符串
Day today = Day.Wed; string todayStr = today.ToString();
四、枚舉的方法
枚舉的主要三個(gè)方法: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:獲取單個(gè)枚舉的名稱
GetNames:獲取所有枚舉的名稱
GetValues:獲取所有枚舉的值
五、標(biāo)志枚舉(二進(jìn)制枚舉)
定義枚舉時(shí),添加Flags特性,之后便可以對這些值執(zhí)行AND、OR、NOT、XOR按位運(yùn)算
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
}
此時(shí)可以使用位移運(yùn)算方便的獲取多個(gè)枚舉的組合變量:
MyEnum myEnum = MyEnum.MyEnum1 | MyEnum.MyEnum2; myEnum |= myEnum | MyEnum.MyEnum3;
或在組合中刪除其中一項(xiàng)枚舉:
myEnum ^= MyEnum.MyEnum1; myEnum &= ~MyEnum.MyEnum2;
需要判斷是否包含某一枚舉值時(shí),可以使用以下方法判斷:
(curMyEnum & MyEnum.Enum1) > 0
并集 &交集 ^差集
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
mall整合SpringSecurity及JWT認(rèn)證授權(quán)實(shí)戰(zhàn)下
這篇文章主要為大家介紹了mall整合SpringSecurity及JWT認(rèn)證授權(quán)實(shí)戰(zhàn)第二篇,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
Java實(shí)現(xiàn)4種微信搶紅包算法(小結(jié))
微信紅包是大家經(jīng)常使用的,到現(xiàn)在為止仍然有很多紅包開發(fā)的需求,實(shí)現(xiàn)搶紅包算法也是面試常考題,本文就詳細(xì)的來介紹一下如何實(shí)現(xiàn),感興趣的可以了解一下2021-12-12
springboot?maven?plugin報(bào)紅的解決辦法
本文主要介紹了springboot?maven?plugin報(bào)紅的解決辦法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
java中將一個(gè)List等分成n個(gè)list的工具方法(推薦)
下面小編就為大家?guī)硪黄猨ava中將一個(gè)List等分成n個(gè)list的工具方法(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-03-03
spring boot starter actuator(健康監(jiān)控)配置和使用教程
這篇文章主要介紹了spring-boot-starter-actuator(健康監(jiān)控)配置和使用教程,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-06-06
java?Map接口子類HashMap遍歷與LinkedHashMap詳解
這篇文章主要介紹了java?Map接口子類HashMap遍歷與LinkedHashMap詳解,Map接口下的集合與Collection接口下的集合,它們存儲(chǔ)數(shù)據(jù)的形式不同,感興趣的小伙伴可以參考下面文章詳細(xì)內(nèi)容介紹2022-06-06

