패키지를 만들고 클래스를 만들다가 보이는 Enum

 항상 지나치다가 공부를 하면서 열거 타입이라는 것을 알게되었다.

 

 

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

+ Recent posts