TIL - Enum 클래스

장숭혁·2023년 11월 17일
0

TIL작성

목록 보기
19/60

Enum 열거형이란?

  • Enum 열거형은 일정한 상수들의 집합을 정의하는 데이터 타입이다. Java enum클래스는 서로 관련있는 상수들을 하나의 그룹으로 모아 정의할때 사용된다.

  • Enum은 코드를 보기 쉽게 하고, 유지보수하기도 쉽게 한다. 주로 상태, 옵션, 설정등을 나타내는데 사용된다.

    public enum Days {
       MONDAY,
       TUESDAY,
       WEDNESDAY,
       THURSDAY,
       FRIDAY,
       SATURDAY,
       SUNDAY
    }
    
  • enum은 다른 클래스 내부에 정의될 수도 있고, 별도의 파일로 분리 정의될 수 있다.

public class EnumExample {
    enum Days {
        MONDAY,
        TUESDAY,
        WEDNESDAY,
        THURSDAY,
        FRIDAY,
        SATURDAY,
        SUNDAY
    }

    public static void main(String[] args) {
        Days today = Days.MONDAY;

        switch (today) {
            case MONDAY:
                System.out.println("Today is Monday");
                break;
            case TUESDAY:
                System.out.println("Today is Tuesday");
                break;
            // 나머지 요일들에 대한 처리
            default:
                System.out.println("It's some other day");
        }
    }
}

열거형의 사용법

열거형이름.상수명 클래스의 static 변수를 참조하는 것과 동일함

열거형 비교

"==" , "compareTo()" 사용가능,

메소드

  • values() : 열거형의 모든 상수를 배열에 담아 반환한다.
    enum Days {
      MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
    }
    // 사용법
    Days[] days = Days.values();
    for (Days day : days) {
      System.out.println(day);
    }
  • name() : 열거형 상수의 이름을 문자열로 반환한다.

  • valueOf(String name) 메서드는 해당 Enum 클래스에서 지정된 이름과 일치하는 Enum 상수를 반환한다.

    예시

    enum Days {
      MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
    }
    // 사용법
    Days day = Days.valueOf("MONDAY");
    System.out.println(day); // 출력: MONDAY  
    
  • ordinal() 메서드는 Enum 상수의 순서(0부터 시작하는 인덱스)를 반환한다.

enum Days {
    MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}

// 사용법
Days day = Days.FRIDAY;
int position = day.ordinal();
System.out.println(position); // 출력: 4 
(FRIDAY는 0부터 시작하여 4번째 위치에 있음)
  • compareTo(EnumType other) 메서드는 Enum 상수의 순서를 비교한다.
enum Days {
    MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}

// 사용법
Days firstDay = Days.MONDAY;
Days secondDay = Days.TUESDAY;

int result = firstDay.compareTo(secondDay);
System.out.println(result); // 
출력: 음수 (-1) - MONDAY가 TUESDAY보다 앞에 위치함
profile
코딩 기록

0개의 댓글

관련 채용 정보