자바 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);
}
}
}