天天看點

Java枚舉Java 枚舉

Java 枚舉

1. 枚舉概述

​ **枚舉是一個被命名的常數的集合,用于聲明一組帶辨別符的常數。**枚舉在日常生活中很常見,例如一個人的性别隻能是“男” 或者“女”,一周的星期隻能是7天中的一個等。

​ 類似這種當一個變量有幾種固定可能的取值時,就可以将它定義為枚舉類型。在

JDK 1.5

之前沒有枚舉類型,那時候一般用接口常量來替代。而使用 Java枚舉類型

enum

可以更貼近地表示這種常量。

枚舉類的使用場景:

​ 類的對象是有限個,确定的。

例如:

​ 星期:Monday(星期一)······ Sunday(星期天)

​ 性别:Man(男)······· Woman(女)

​ 季節:Spring(春)······· Winter(冬)

​ ·········

​ 當需要一組常量時,可以使用枚舉。

2. 聲明枚舉

​ 聲明枚舉時必須使用

enum

關鍵字,然後定義枚舉的名稱、可通路性、基礎類型和成員等。

​ 任意兩個枚舉成員不能具有相同的名稱,且它的常數值必須在該枚舉的基礎類型的範圍之内,多個枚舉成員之間使用逗号分隔。

一個跟星期有關的枚舉示例:

public enum Weekday {
	SUN(0,"星期天"),
	MON(1,"星期一"),
	TUS(2,"星期二"),
	WED(3,"星期三"),
	THU(4,"星期四"),
	FRI(5,"星期五"),
	SAT(6,"星期六");

	private int weekNum;
	private String weekName;

	private Weekday(int weekNum,String weekName){
		this.setWeekNum(weekNum);
		this.setWeekName(weekName);
	}


	public String getWeekName() {
		return weekName;
	}

	public void setWeekName(String weekName) {
		this.weekName = weekName;
	}

	public int getWeekNum() {
		return weekNum;
	}

	public void setWeekNum(int weekNum) {
		this.weekNum = weekNum;
	}

}

           

測試:

public class Test {
	
	public static void main(String[] args) {
		Weekday weekday = Weekday.MON;
		System.out.println(weekday);
		//System.out.println(weekday.toString());
		Weekday[] values = Weekday.values();
		for(Weekday w : values){
			System.out.println(w);
		}
		test(Weekday.MON);
		
	}
	
	// 在switch語句中使用枚舉
	public static void test(Weekday w){
		switch (w) {
		case  SUN:
			  System.out.println(w.getWeekName());
			break;
		case  MON:
			 System.out.println(w.getWeekName());
			break;
		case  THU:
			 System.out.println(w.getWeekName());
			break;
		case  WED:
			 System.out.println(w.getWeekName());
			break;
		case  TUS:
			 System.out.println(w.getWeekName());
			break;
		case  FRI:
			 System.out.println(w.getWeekName());
			break;
		case  SAT:
			 System.out.println(w.getWeekName());
			break;
		}
	}

}