Programming/Java

[Java] Enum 클래스에 대해 알아보자

cbw1030 2020. 9. 14. 22:46
반응형

안녕하세요. 이번 포스팅에서는 enum 클래스에 대해 알아보겠습니다.

 

enum

enum은 enumerate를 줄여쓰는 단어로 '열거하다'라는 의미를 갖고 있습니다.

JDK1.5 버전부터 기존의 C언어와 C++에서 사용된 열거체보다 더욱 향상된 성능의 열거체를 정의한 Enum 클래스를 사용할 수 있게 되었습니다.

 

우리는 프로그래밍을 하다보면 공통적으로 한정된 데이터를 다루는 경우가 많습니다.

예를 들자면 '계절', '태양계 행성', '요일' 등이 있습니다.

이렇게 한정된 데이터는 하나의 열거형으로 묶어주면 편리하게 관리할 수 있습니다.

 

Enum 클래스 선언 방법

클래스 외부에서 선언하는 방법

enum Season { 
    SPRING, SUMMER, FALL, WINTER 
}

클래스 내부에서 선언하는 방법

public class EnumExample {
    
    public enum Season {
        SPRING, SUMMER, FALL, WINTER
    }
}

 

Enum 클래스 사용 방법

// 클래스 외부에서 선언
enum Season {
    SPRING, SUMMER, FALL, WINTER
}

public class EnumExample {

    public String name;       // 이름
    public String likeSeason; // 좋아하는 계절
    public Season hateSeason; // 싫어하는 계절

    public static void main(String[] args) {
        EnumExample person = new EnumExample();
        
        person.name = "가나다";
        person.likeSeason = Season.SUMMER;
        person.hateSeason = Season.WINTER;
        
        System.out.println("이름: " + person.name);
        System.out.printf("좋아하는 계절: %s, 싫어하는 계절: %s", person.likeSeason, person.hateSeason);
    }

}

실행 결과

열거객체 메서드

valueOf()

enum Season { 
    SPRING, SUMMER, FALL, WINTER 
}

public class EnumExample {
    
    public static void main(String[] args) {
        Season season = Season.valueOf("WINTER");
        System.out.println(season); //가을
    }
}

valueOf() 메서드는 인자로 주어지는 문자열과 동일한 문자열을 가지는 열거 객체를 리턴합니다.

 

values()

enum Season { 
    SPRING, SUMMER, FALL, WINTER 
}

public class EnumExample {
    
    public static void main(String[] args) {
        
        // enhanced for loop
        for (Season season : Season.values()) {
            System.out.println(season); // SPRING, SUMMER, FALL, WINTER 차례로 출력 
        }
    }
}

values() 메서드는 열거 타입의 모든 열거객체들을 배열로 만들어 리턴합니다.

 

ordinal()

enum Season { 
    SPRING, SUMMER, FALL, WINTER 
}

public class EnumExample {
    
    public static void main(String[] args) {
        Season season = Season.WINTER;
        System.out.println(season.ordinal()); // 3
    }
}

Ordinal() 메서드는 전체 열거 객체 중 몇 번째의 객체인지 리턴합니다.

순번은 배열과 마찬가지로 0부터 인덱스가 시작됩니다.

반응형