개발/JAVA

Java 기초편 - 열거형(Enum) : 간단한 예제로 배우는 Enum 사용법

예니03 2025. 1. 3. 11:24
반응형

Java에서 열거형(Enum)은 한정된 값의 집합을 정의할 때 사용되는 특별한 데이터 타입입니다. 예를 들어, 요일, 상태(START, STOP), 방향(NORTH, SOUTH) 등과 같이 값이 고정된 데이터를 정의할 때 유용합니다. 이번 글에서는 Enum의 기본 개념과 활용 방법을 간단한 예제를 통해 알아보겠습니다. 😊

1. Enum이란?

Enum은 여러 개의 상수(Constant)를 묶어서 하나의 타입으로 정의할 수 있는 Java의 데이터 타입입니다.

  • 값이 고정되고, 변하지 않는 경우 사용됩니다.
  • 코드의 가독성안정성을 높이는 데 유용합니다.
  • switch문이나 조건문에서 활용하기 좋습니다.

2. 코드 예제: 요일 Enum 정의 및 활용

(1) Enum 정의

Week라는 이름의 열거형(Enum)을 정의합니다.

public enum Week {
    SUNDAY,
    MONDAY,
    TUESDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY
}

(2) Enum 사용 코드

아래는 Week Enum을 활용하는 예제입니다.

public class EnumEx {
    public static void main(String[] args) {
        Week today = Week.WEDNESDAY;  // Enum 값 할당
        System.out.println(today);   // 출력: WEDNESDAY

        // Enum의 메서드 활용
        System.out.printf("Today is %s(%d)%n",
                today.name(),    // Enum 이름 반환 (문자열)
                today.ordinal());  // Enum의 순서 반환 (0부터 시작)

        // 문자열로부터 Enum 객체 생성
        String strWeek = "FRIDAY";
        Week obj = Week.valueOf(strWeek);  // "FRIDAY" → Week.FRIDAY로 변환

        System.out.printf("obj is %s(%d)%n",
                obj.name(),
                obj.ordinal());
    }
}

 

3. 실행 결과 분석

출력 결과

WEDNESDAY  
Today is WEDNESDAY(3)  
obj is FRIDAY(5)

코드 설명

  1. Enum 값 출력: Week.WEDNESDAY는 열거형 객체 중 하나로, System.out.println(today)를 통해 문자열로 출력됩니다.
  2. Enum 메서드 활용:
    • name(): Enum 상수의 이름을 문자열로 반환.
    • ordinal(): Enum 상수의 정의된 순서를 반환(0부터 시작).
  3. 문자열로 Enum 변환:
    • Week.valueOf(strWeek): 문자열 "FRIDAY"를 Enum 상수 Week.FRIDAY로 변환합니다.
    • Enum 상수는 대소문자를 구분하므로 정확히 입력해야 합니다.

4. Enum의 주요 메서드

1) name()

  • Enum 상수의 이름을 반환합니다.
  • 예: Week.WEDNESDAY.name() → "WEDNESDAY"

2) ordinal()

  • Enum 상수의 순서를 반환합니다(0부터 시작).
  • 예: Week.WEDNESDAY.ordinal() → 3

3) valueOf(String name)

  • 문자열을 해당 Enum 상수로 변환합니다.
  • 예: Week.valueOf("FRIDAY") → Week.FRIDAY

5. Enum의 활용 사례

(1) 요일 계산

Week today = Week.MONDAY;
if (today == Week.SATURDAY || today == Week.SUNDAY) {
    System.out.println("오늘은 주말입니다!");
} else {
    System.out.println("오늘은 평일입니다!");
}

(2) 상태 관리

Enum은 상태를 관리하거나 고정된 값으로 조건을 처리할 때 사용됩니다.

public enum State {
    START,
    STOP,
    PAUSE
}

State currentState = State.START;
if (currentState == State.START) {
    System.out.println("프로그램 실행 중...");
}

(3) switch문 활용

Enum은 switch문과 함께 사용하면 코드가 더욱 간결해집니다.

Week today = Week.TUESDAY;

switch (today) {
    case MONDAY:
        System.out.println("월요일입니다.");
        break;
    case TUESDAY:
        System.out.println("화요일입니다.");
        break;
    default:
        System.out.println("다른 요일입니다.");
}

 

6. Enum 사용 시 주의사항

  1. 값 고정: Enum은 값이 고정된 경우에만 사용합니다.
  2. 대소문자 구분: valueOf 메서드는 대소문자를 구분하므로 입력에 주의해야 합니다.
  3. 순번 사용 주의: ordinal() 값은 Enum 상수의 순서가 변경되면 바뀌기 때문에, 프로그램 로직에서 직접 사용하는 것은 권장하지 않습니다.

 

정리

  1. Enum은 값이 고정된 데이터를 표현하는 데 사용됩니다.
    • 예: 요일, 상태, 방향 등.
  2. name()과 ordinal() 메서드로 Enum 상수의 이름과 순서를 확인할 수 있습니다.
  3. Enum은 switch문과 조건문에서 가독성을 높이고 안정적인 코드를 작성하는 데 유용합니다.
반응형