- Java與Android移動(dòng)應(yīng)用開(kāi)發(fā):技術(shù)、方法與實(shí)踐
- 曹化宇
- 777字
- 2019-12-06 15:39:04
2.10 枚舉類型
前面已經(jīng)了解了幾種基本的數(shù)據(jù)類型,相信讀者也能進(jìn)行一些簡(jiǎn)單的數(shù)據(jù)計(jì)算工作了。不過(guò),在實(shí)際工作中,需要處理的數(shù)據(jù)和信息的類型可不止這幾種,那么處理性別、星期幾這類信息時(shí),應(yīng)該使用什么數(shù)據(jù)類型呢?
首先,這類數(shù)據(jù)都有些什么特點(diǎn)呢?性別只能是男和女,當(dāng)然,用戶也可能選擇保密,這樣就會(huì)有三個(gè)固定的數(shù)據(jù)。星期包括從星期日到星期六這7個(gè)數(shù)據(jù)值(這里假設(shè)每周的第一天為星期日)。代碼中,如果只是簡(jiǎn)單地使用數(shù)字來(lái)表示,很可能會(huì)出現(xiàn)問(wèn)題,例如輸入錯(cuò)誤、意外賦值等。
那么,如何解決這類問(wèn)題呢?可以使用本節(jié)討論的枚舉類型來(lái)處理。
枚舉是一種自定義的數(shù)據(jù)類型,其中定義了可用的數(shù)據(jù)(枚舉值)。下面的代碼定義了一個(gè)名為ESex的枚舉類型,用于操作性別數(shù)據(jù)。

請(qǐng)注意,需要在方法的外部定義其他類型。定義枚舉時(shí),使用enum關(guān)鍵字,enum關(guān)鍵字后面指定枚舉類型的名稱。然后,枚舉成員定義在一對(duì)花括號(hào)中,每個(gè)值使用逗號(hào)分隔。
定義枚舉類型的變量(如代碼中的sex變量)時(shí),與定義基本數(shù)據(jù)類型應(yīng)該是相同的,只是在賦值時(shí)使用了“<枚舉類型>.<成員>”的形式指定枚舉變量的值。
有些時(shí)侯,枚舉數(shù)據(jù)可能需要轉(zhuǎn)換為數(shù)值,例如需要保存到SQLite數(shù)據(jù)庫(kù)中的時(shí)候,此時(shí),可以使用類似下面的代碼。

說(shuō)明代碼的功能之前,先介紹枚舉類型的一個(gè)特點(diǎn)。枚舉類型中,每個(gè)成員都會(huì)有一個(gè)整數(shù)索引值,第一個(gè)成員的索引值為0,第二個(gè)成員的索引值為1,以此類推。
當(dāng)在枚舉類型和整數(shù)類型之間進(jìn)行轉(zhuǎn)換時(shí),實(shí)際上就是在成員索引值和成員名稱之間進(jìn)行轉(zhuǎn)換。
再來(lái)看代碼功能。第一個(gè)輸出語(yǔ)句使用枚舉類型變量sex的ordinal()方法獲取其枚舉成員的索引值。在第二個(gè)輸出語(yǔ)句中,首先使用ESex.values()方法獲取所有枚舉成員組成的數(shù)組,然后獲取索引值為2的成員,也就是第3個(gè)成員的成員,即female。
實(shí)際上,在學(xué)習(xí)面向?qū)ο缶幊毯蛿?shù)組以后,這些代碼都是非常容易理解的。而現(xiàn)在,只需要了解枚舉成員和整數(shù)之間的轉(zhuǎn)換方法就可以了。
- Django+Vue.js商城項(xiàng)目實(shí)戰(zhàn)
- Mastering Entity Framework Core 2.0
- Objective-C應(yīng)用開(kāi)發(fā)全程實(shí)錄
- Java面向?qū)ο筌浖_(kāi)發(fā)
- C++面向?qū)ο蟪绦蛟O(shè)計(jì)(微課版)
- DevOps Automation Cookbook
- 高級(jí)C/C++編譯技術(shù)(典藏版)
- 名師講壇:Spring實(shí)戰(zhàn)開(kāi)發(fā)(Redis+SpringDataJPA+SpringMVC+SpringSecurity)
- SQL Server與JSP動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)
- R用戶Python學(xué)習(xí)指南:數(shù)據(jù)科學(xué)方法
- Mastering C++ Multithreading
- 深入理解C指針
- Raspberry Pi Robotic Projects(Third Edition)
- Maker基地嘉年華:玩轉(zhuǎn)樂(lè)動(dòng)魔盒學(xué)Scratch
- JavaScript+jQuery網(wǎng)頁(yè)特效設(shè)計(jì)任務(wù)驅(qū)動(dòng)教程