자바 Java/문법

열거 타입(Enumeration Type)

하나비 HANABI 2022. 1. 3. 15:52

열거타입(Enumeration Type) : 한정된 값만 갖는 데이터 타입. 한정된 값은 열거상수로 정의

 

<Week 클래스>

public enum Week {
	// 상수는 모두 대문자로 선언
	MONDAY,
	TUESDAY,
	WEDNESDAY,
	THURSDAY,
	FRIDAY,
	SATURDAY,
	SUNDAY;
}

<EnumWeekEx 클래스>

import java.util.Calendar;

public class EnumWeekEx {

	public static void main(String[] args) {
		
		Week today = null; // enum타입의 변수 선언
		
		Calendar cal = Calendar.getInstance(); // 자바에 있는 캘린더 객체 생성
		int week = cal.get(Calendar.DAY_OF_WEEK); // 날짜정보를 가져와서 변수에 넣음. int로 선언하여 숫자값을 리턴
		
		switch(week) {
			case 1 :
				today = Week.SUNDAY; 
				break;
			case 2 :
				today = Week.MONDAY;
				break;
			case 3 :
				today = Week.WEDNESDAY;
				break;
			case 4 :
				today = Week.THURSDAY;
				break;
			case 5 :
				today = Week.FRIDAY;
				break;
			case 6 :
				today = Week.SATURDAY;
				break;
				
		}
		System.out.println("오늘의 요일: " + today);
		
	}

}

오늘의 요일: MONDAY

(게시글 작성날짜 기준 오늘이 월요일이므로 MONDAY 출력)

 

<EnumMethod클래스>로 열거 객체의 메소드 알아보기

public class EnumMethod {

	public static void main(String[] args) {
		
		// name() - 객체의 이름을 가져옴
		Week today = Week.SUNDAY; // 오늘이 일요일이라고 선언
		
		String name = today.name(); 
		System.out.println(name); // SUNDAY
		
		// ordinal() - 객체의 순번을 리턴
		int ordinal = today.ordinal(); 
		System.out.println(ordinal); // 6
		
		// compareTo() - 순번의 차이값을 리턴
		Week day1 = Week.MONDAY;
		Week day2 = Week.WEDNESDAY;
		int result1 = day1.compareTo(day2); 
		int result2 = day2.compareTo(day1);
		System.out.println(result1); // -2
		System.out.println(result2); // 2
		
		// valueOf() - 주어진 문자열의 열거 객체를 리턴
		if(args.length == 1) { // 커멘트창에 직접 입력
			String strDay = args[0];
			Week weekDay = Week.valueOf(strDay); 
			if(weekDay == Week.SATURDAY || weekDay == Week.SUNDAY) {
				System.out.println("주말입니다");
			} else {
				System.out.println("평일입니다");
			}
		}
		
		// values() - 모든 열거 객체들을 배열로 리턴
		Week[] days = Week.values();
		for (Week day : days) {
			System.out.println(day);
		}
		

	}

}