1. 程式人生 > 實用技巧 >列舉類 Enum 之初認識

列舉類 Enum 之初認識

 1 import java.util.*;
 2 public class Demo13{
 3     public static void main(String[] args) {
 4         Weekday day = Weekday.SUN;
 5         //int day = 1;
 6         if(day.dayValue == 1 || day.dayValue == 7){
 7             System.out.println("Work at home!");
 8         }else{
 9             System.out.println("Work at office!");
10 } 11 //因為enum是一個class,每個列舉的值都是class例項 12 //返回常量名 13 String s = day.name(); 14 //返回定義的常量的順序,從0開始計數 15 int n = day.ordinal(); 16 System.out.println(s); // SUN 17 System.out.println(n); // 0 18 } 19 } 20 21 /* 22 通過enum定義的列舉類,和其他的class有什麼區別? 23
24 1.定義的enum型別總是繼承自java.lang.Enum,且無法被繼承; 25 26 2.只能定義出enum的例項,而無法通過new操作符建立enum的例項; 27 28 3.定義的每個例項都是引用型別的唯一例項; 29 使用enum定義的列舉類是一種引用型別。前面我們講到,引用型別比較,要使用equals()方法,如果使用==比較,它比較的是兩個引用型別的變數是否是同一個物件。因此,引用型別比較,要始終使用equals()方法,但enum型別可以例外 30 31 因為enum型別的每個常量在JVM中只有一個唯一例項,所以可以直接用==比較
32 33 if (day == Weekday.FRI) { // ok! 34 } 35 if (day.equals(Weekday.SUN)) { // ok, but more code! 36 } 37 38 4.可以將enum型別用於switch語句 39 */ 40 enum Weekday{ 41 //定義的每個列舉常量都是列舉類的例項 42 SUN(1),MON(2),TUE(3),WED(4),THU(5),FRI(6),SAT(7); 43 44 //給每個列舉常量新增欄位 45 public final int dayValue; 46 47 //私有構造器 48 private Weekday(int dayValue){ 49 this.dayValue = dayValue; 50 } 51 }