quilt code

[고급자바] Enum 본문

daily/고급자바

[고급자바] Enum

김뱅쇼 2023. 2. 3. 18:31

열거형

열거형 :  상수값들을 선언하는 방법

static final int A = 0;
static final int B = 1;
static final int C = 2;
static final int D = 3;


enum Data { A, B, C, D };


열거형 선언방법
enum 열거형 이름 { 상수값1, 상수값2, 상수값3, ..., 상수값n } ;

 

1) City 열거형 정의 (기본값을 이용하는 열거형) 

public enum City {서울, 부산, 대구, 광주, 대전}; // 서울() <-() 생략

public enum HomeTown {서울, 광주, 제주, 대구, 대전, 춘천};

 

2) 데이터값을 임의로 지정한 열거형 객체 선언

데이터 값을 정해 줄 경우에는 생성자를 만들어서 괄호 속의 값이 변수에 저장되도록 해야 한다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    public enum Season {
        봄("3월부터 5월까지"), 여름("6월부터 8월까지"), 
        가을("9월부터 11월까지"), 겨울("12월부터 1월까지");
        
        // 괄호 속의 값이 저장될 변수 선언 
        private String str;
        
        // 생성자 만들기(열거형의 생성자는 제어자가 묵시적으로 'private'이다.
        Season(String data) {  // private 생략 가능
            this.str = data;
        }
        
        // 값을 반환하는 메소드 작성
        public String getStr() {
            return str;
        }        
    }
    
cs

 

3) 메인메소드

 

**열거형에서 사용되는 메소드**

  ① name() : 열거형 상수의 이름을 문자열로 반환한다.

  ② ordinal() : 열거형 상수가 정의된 순서값을 반환한다. (기본적으로 0부터 시작함.)

  ③ valueOf("열거형상수이름");  : 지정된 열거형에서 '열거형상수이름'과 일치하는 열거형 상수를 반환한다.

 

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
public static void main(String[] args) {
        City myCity1;  // 열거형 객체변수 선언 
        City myCity2; 
        
        // 열거형 객체변수에 값 저장하기
        myCity1 = City.서울;
        myCity2 = City.valueOf("서울");
        
        System.out.println("myCity1 : " + myCity1.name());
        System.out.println("myCity1의 ordinal : " + myCity1.ordinal());
        System.out.println();
        
        System.out.println("myCity2 : " + myCity1.name());
        System.out.println("myCity2의 ordinal : " + myCity2.ordinal());
        System.out.println("========================================");
        
        Season ss = Season.valueOf("여름");
        System.out.println("name => " + ss.name());
        System.out.println("ordinal => " + ss.ordinal());
        System.out.println("get메소드 => " + ss.getStr());
        System.out.println("----------------------------------------");
        
        // 열거형이름.values() 사용하기
        Season[] enumArr = Season.values();
        for(int i=0; i<enumArr.length; i++) {
            System.out.println(enumArr[i].name() + ": " + enumArr[i].getStr());
        }
        
        for(City city : City.values()) {
            System.out.println(city + " : " + city.ordinal());
        }
        
        City city = City.대구;
        
        System.out.println(city == City.valueOf("대전"));
        System.out.println(city == City.대구);
        
        
        System.out.println("대구 => " + city.compareTo(City.대구));
        System.out.println("서울 => " + city.compareTo(City.서울));
        System.out.println("대전 => " + city.compareTo(City.대전));
    }
 
cs

'daily > 고급자바' 카테고리의 다른 글

[고급자바] 호텔 과제  (0) 2023.02.03
[고급자바] 로또 과제  (0) 2023.02.03
[고급자바] 와일드 카드  (0) 2023.02.03
[고급자바] 제너릭 (2)  (0) 2023.02.03
[고급자바] 제너릭 (1)  (0) 2023.02.02