定義: 所謂枚舉類型,就是用一組數量有限的標識符來表示一組連續的整型常數,使能夠更清晰的表示出現實世界
枚舉的用法:一些方法在運行的時候,需要的數據類型不是隨意的,它是要在一個範圍內有效的值,就可以用枚舉來解決這個問題
語法格式定義
enum 枚舉類的類名{
//先定義出 對應的 枚舉值
//再來寫方法
}
枚舉的注意點:
1.枚舉類型 是一個 特殊的 類 final class 枚舉類名 extends java.lang.Enum
2.枚舉類中 的 枚舉值(man, woman) 默認修飾符 是 public static final
3.枚舉類中的 枚舉值 它的類型 是 本類類型 Sex類型的 對象
4.枚舉類的構造方法 是 private修飾的, 枚舉類 會自內部 自己構造枚舉值
5.枚舉類 是可以有成員變量的,但是隻能通過枚舉值 去訪問枚舉類型 的 實例成員變量
6.枚舉類 構造的 枚舉值對象,默認是無參構造的,但是你可以通過有參數的構造來構造他們, 這個有參構造 必須是 private修飾的
7.枚舉類 也可以有抽象的方法, 但是注意的是 枚舉值必須要實現抽象的方法
8.枚舉值 必須是 枚舉類中的 第一個語句
示例代碼:public class Demo{
public static void main(String[] args) {
Student jack = new Student();
jack.setAge(33);
jack.setName("傑克");
jack.setSex(Sex.man);
Sex.man.value = "呵呵";
Sex.value1 = "haha";
System.out.println("jack 的 姓名 : " + jack.getName() + ", 性別是 : " + jack.getSex());
System.out.println("value : "+ Sex.man.value); // "hehe"
System.out.println("value : "+ Sex.woman.value); // null
System.out.println("value : "+ Sex.value1);
//Sex s = new Sex();
Sex.man.test(); Sex.woman.test(); Sex.man.test1(); Sex.woman.test1(); } } enum Sex{ //定義枚舉值 man("男"){ public void test1(){ System.out.println("man 在 實現抽象方法"); } }, woman("女"){ public void test1(){ System.out.println("woman 在 實現抽象方法"); } }, renyao("人妖"){ public void test1(){ System.out.println("人妖 在 實現抽象方法"); } };//特別注意大括號後面的逗號和分號 //成員變量 String value; static String value1; //行爲 方法 //1.構造方法 private Sex(String value){ this.value = value; } public void test(){ System.out.println("這是枚舉類型的 公開的普通方法 : " + this.value); } //聲明瞭一個抽象方法 public abstract void test1(); } class Student{ private String name; private int age; private Sex sex; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Sex getSex() { return sex; } public void setSex(Sex sex) { this.sex = sex; } }
遍歷、switch 等常用操作
對enum進行遍歷和switch的操作示例代碼:
public class Test
{ public static void main(String[]
args) { for (EnumTest
e : EnumTest.values()) { System.out.println(e.toString()); } System.out.println( "----------------我是分隔線------------------" ); EnumTest
test = EnumTest.TUE; switch (test)
{ case MON: System.out.println( "今天是星期一" ); break ; case TUE: System.out.println( "今天是星期二" ); break ; //
... ... default : System.out.println(test); break ; } } } |
輸出結果:
MON TUE WED THU FRI SAT SUN |
enum 對象的常用方法介紹
int
compareTo(E o)
比較此枚舉與指定對象的順序。
Class<E>
getDeclaringClass()
返回與此枚舉常量的枚舉類型相對應的 Class 對象。
String
name()
返回此枚舉常量的名稱,在其枚舉聲明中對其進行聲明。
int
ordinal()
返回枚舉常量的序數(它在枚舉聲明中的位置,其中初始常量序數爲零)。
String
toString()
返回枚舉常量的名稱,它包含在聲明中。
static
<T extends Enum<T>> T
valueOf(Class<T> enumType, String name)
返回帶指定名稱的指定枚舉類型的枚舉常量。
總結
可以把 enum 看成是一個普通的 class,它們都可以定義一些屬性和方法,不同之處是:enum 不能使用 extends 關鍵字繼承其他類,因爲 enum 已經繼承了 Java.lang.Enum(java是單一繼承)。
以上是我對java中枚舉的部分總覺以及資料查找,若有錯誤,歡迎指正!