Java面向?qū)ο蠡A知識之枚舉
一、枚舉的定義
枚舉是一組命名整型常量。枚舉類型是使用enum關(guān)鍵字聲明的。
C# 枚舉是值類型。換句話說,枚舉包含自己的值,且不能繼承或傳遞繼承。
二、枚舉的聲明
聲明枚舉的一般語法:
enum <enum_name> { enumeration list };
其中,
enum_name
指定枚舉的類型名稱。enumeration list
是一個用逗號分隔的標識符列表。
枚舉列表中的每個符號代表一個整數(shù)值,一個比它前面的符號大的整數(shù)值。默認情況下,第一個枚舉符號的值是 0.例如:
enum Day { Sun, Mon, tue, Wed, thu, Fri, Sat };
在編譯枚舉類型時,會把每個符號轉(zhuǎn)換成類型的一個常量字段很一個int32的公共實例字段,不夠后者不能通過代碼調(diào)用。
因為枚舉的符號是一個常量字段,如果在不同的程序集引用,可能會出現(xiàn)一些版本問題,
每個枚舉都有一個基礎類型, 包含 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
:獲取所有枚舉的值
五、標志枚舉(二進制枚舉)
定義枚舉時,添加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)文章
mall整合SpringSecurity及JWT認證授權(quán)實戰(zhàn)下
這篇文章主要為大家介紹了mall整合SpringSecurity及JWT認證授權(quán)實戰(zhàn)第二篇,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-06-06Java實現(xiàn)4種微信搶紅包算法(小結(jié))
微信紅包是大家經(jīng)常使用的,到現(xiàn)在為止仍然有很多紅包開發(fā)的需求,實現(xiàn)搶紅包算法也是面試??碱},本文就詳細的來介紹一下如何實現(xiàn),感興趣的可以了解一下2021-12-12springboot?maven?plugin報紅的解決辦法
本文主要介紹了springboot?maven?plugin報紅的解決辦法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-07-07java中將一個List等分成n個list的工具方法(推薦)
下面小編就為大家?guī)硪黄猨ava中將一個List等分成n個list的工具方法(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-03-03spring boot starter actuator(健康監(jiān)控)配置和使用教程
這篇文章主要介紹了spring-boot-starter-actuator(健康監(jiān)控)配置和使用教程,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2018-06-06java?Map接口子類HashMap遍歷與LinkedHashMap詳解
這篇文章主要介紹了java?Map接口子類HashMap遍歷與LinkedHashMap詳解,Map接口下的集合與Collection接口下的集合,它們存儲數(shù)據(jù)的形式不同,感興趣的小伙伴可以參考下面文章詳細內(nèi)容介紹2022-06-06