Enum(열거형)

정민교·2022년 9월 13일
0

1. 열거형이란?

  1. 서로 연관된 상수들의 집합

2. 열거형 사용 이유

  1. 상수 이름 중복을 피할 수 있다. -> 이유?
  2. 타입 안정성을 확보할 수 있다. -> 이유?
  3. 여러 상수들을 선언하고 관리하기 편리하다.
  4. 코드 가독성이 확보된다.

3. 열거형 사용

  1. switch 문 사용시 case 문에 열거형 이름은 적지 않고 상수 이름만 적는다.
  2. 열거 상수들은 모두 열거형 타입의 객체이며 따로 할당하지 않아도 자동으로 0부터 차레로 정수값이 할당된다.
  3. 모든 열거형의 조상은 java.lang.Enum 클래스이다.

열거형 메서드

메서드설명
String name()열거 객체의 상수 이름을 문자열로 반환
int ordinal()열거 객체가 정의된 순서를 반환
int comapreTo(비교값)전달받은 인자와 비교하여 순번을 대소비교하여 반환
열거타입 valueOf(String name)전달받은 인자의 열거 객체 반환
열거배열 values()모든 열거 객체들을 배열로 반환
enum Seasons {
  // 3-2
  SPRING, // 0
  SUMMER, // 1
  FALL,   // 2
  WINTER  // 3
}

enum Level {LOW, MEDIUM, HIGH}

public class EnumExample {
  public static void main(String[] args) {
    Seasons favoriteSeasons = Seasons.SPRING;
    System.out.println(favoriteSeasons);
    System.out.println(Seasons.SPRING);

    Level level = Level.MEDIUM;
    Level[] allLevels = Level.values(); // 3-3

    for (Level elem : allLevels) {
      System.out.printf("%s=%d%n", elem.name(), elem.ordinal()); // 3-3
    }

    Level findLevel = Level.valueOf("LOW"); // 3-3
    System.out.println(findLevel);
    System.out.println(Level.LOW == Level.valueOf("LOW")); // 3-3

    switch (level) {
      case LOW: // 3-1
        System.out.println("낮은 레벨");
        break;
      case MEDIUM:
        System.out.println("중간 레벨");
        break;
      case HIGH:
        System.out.println("높은 레벨");
        break;
    }
  }
}
profile
백엔드 개발자

0개의 댓글