패키지를 만들고 클래스를 만들다가 보이는 Enum
항상 지나치다가 공부를 하면서 열거 타입이라는 것을 알게되었다.
열거타입 (Enum, Enumerated Type)
- 한정된 값만을 갖는 데이터 타입 ex) 요일, 계절
- 열거타입은 몇 개의 열거 상수 중에서 하나의 상수를 저장하는 데이터 타입이다.
열거타입 선언
- 관례적으로 첫 문자를 대문자로 하고 나머지는 소문자로 구성한다.
- 열거 상수는 열거 타입의 값으로 사용, 관례적으로 열거 상수는 모두 대문자로 작성한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
package com.test.java;
public enum Week { // Week, 열거 타입 이름
// 열거 상수
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
package com.test.java;
import java.util.Calendar;
public class EnumWeek {
public static void main(String[] args) {
Week today = null; // 열거 타입 변수 선언
Calendar cal = Calendar.getInstance();
int week = cal.get(Calendar.DAY_OF_WEEK);
switch(week) {
case 1 :
today = Week.SUNDAY;
break;
case 2 :
today = Week.MONDAY;
break;
case 3 :
today = Week.TUESDAY;
break;
case 4 :
today = Week.WEDNESDAY;
break;
case 5 :
today = Week.THURSDAY;
break;
case 6 :
today = Week.FRIDAY;
break;
case 7 :
today = Week.SATURDAY;
break;
}
System.out.println("오늘 요일 : " + today); // 오늘 요일 : TUESDAY
}
}
|
열거 객체의 메소드
리턴 타입 | 메소드 (매개 변수) | 설명 |
String | name() | 열거 객체의 문자열을 리턴 |
int | ordinal() | 열거 객체의 순번을 리턴 |
int | compareTo() | 열거 객체를 비교해서 순번 차이를 리턴 |
열거 타입 | valueOf(String name) | 주어진 문자열의 열거 객체를 리턴 |
열거 배열 | values | 모든 열거 객체들을 배열로 리턴 |
name() 메소드
- 열거 객체가 가지고 있는 문자열을 리턴한다.
1
2
3
4
|
Week today = Week.SUNDAY;
String name = today.name();
System.out.println(name); // SUNDAY
|
ordinal() 메소드
- 전체 열거 객체 중 몇 번째 열거 객체인지 알려준다.
1
2
3
4
|
Week today = Week.SUNDAY;
int ordinal = today.ordinal();
System.out.println(ordinal); // 6
|
compareTo() 메소드
- 매개값으로 주어진 열거 객체를 기준으로 전후로 몇 번째 위치하는지를 비교한다.
1
2
3
4
5
6
7
8
|
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() 메소드
- 매개값으로 주어진 문자열과 동일한 문자열을 가지는 열거 객체를 리턴한다.
1
2
|
Week weekDay = Week.valueOf("SATURDAY");
System.out.println(weekDay); // SATURDAY
|
values() 메소드
- 열거 타입의 모든 열거 객체들을 배열로 리턴한다.
1
2
3
4
5
|
Week[] days = Week.values();
for(Week day : days) { // 향상된 for문
System.out.println(day); // SATURDAY MONDAY TUESDAY WEDNESDAY THURSDAY FRIDAY SATURDAY SUNDAY
}
|
출처 : 신용권, 「이것이 자바다」, 한빛미디어(2019), p171-p180
'교육 > Java' 카테고리의 다른 글
#118 Java 메모리 사용 영역 (0) | 2019.11.04 |
---|---|
#117 Java 나만의 예외처리 (0) | 2019.11.01 |
#116 Java 제네릭(Generic) (0) | 2019.10.31 |
#115 Java 복습 (기본형, 참조형, null, Collection) (0) | 2019.10.30 |
#113 Java MVC 패턴, model1과 model2 (0) | 2019.10.28 |