Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
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
Tags
more
Archives
Today
Total
관리 메뉴

랩터

[Java] 열거형 본문

공부/JAVA

[Java] 열거형

raptorhs 2024. 7. 3. 10:35

열거형(enum)은 서로 연관된 상수들의 집합을 의미합니다.

상수란 변하지 않는 값을 의미하며 final 키워드를 사용하여 선언할 수 있었습니다.

자바에서 열거형은 여러 상수들을 보다 편리하게 선언하고 관리할 수 있게 하며, 상수 명의 중복을 피하고, 타입에 대한 안정성을 보장합니다.

또한 같은 효과를 낼 수 있는 다른 코드에 반해 훨씬 더 간결하고 가독성이 좋은 코드를 작성할 수 있으며 switch문에서도 작동이 가능합니다.

enum Seasons { SPRING, SUMMER, FALL, WINTER }
enum Frameworks { DJANGO, SPRING, NEST, EXPRESS }

 

 

enum은 정해진 상수 집합으로 정의되기 때문에, new 키워드를 사용하여 직접 인스턴스를 생성하는 것이 불가능합니다.

따라서 Seasons seasons = new Seasons(); ->불가능

package example_enum;
enum Seasons {SPRING, SUMMER, FALL, WINTER}
public class Main {
    public static void main(String[] args) {
        Seasons seasons = Seasons.SPRING;
        switch (seasons){
            case Seasons.SPRING:
                System.out.println("봄");
                break;
            case Seasons.SUMMER:
                System.out.println("여름");
                break;
            case Seasons.FALL:
                System.out.println("가을");
                break;
            case Seasons.WINTER:
                System.out.println("겨울");
                break;
        }
    }
}

 

열거형의 사용

상수는 대소문자로 모두 작성이 가능하지만, 관례적으로 대문자로 작성합니다.

enum Seasons { SPRING, SUMMER, FALL, WINTER }

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

열거형에 선언된 상수에 접근하는 방법은 열거형이름.상수명 을 통해서 가능합니다.

 

열거형에서 사용할 수 있는 메서드입니다.

리턴 타입   메서드(매개변수)        설명

String name() 열거 객체가 가지고 있는 문자열을 리턴하며, 리턴되는 문자열은 열거타입을 정의할 때 사용한 상수 이름과 동일합니다.
int ordinal() 열거 객체의 순번(0부터 시작)을 리턴합니다.
int compareTo(비교값) 주어진 매개 값과 비교해서 순번 차이를 리턴합니다.
열거 타입 valueOf(String name) 주어진 문자열의 열거 객체를 리턴합니다.
열거 배열 values() 모든 열거 객체들을 배열로 리턴합니다.

 

package example_enum;
enum Level{
    LOW,
    MEDIUM,
    HIGH
}
public class EnumTest {
    public static void main(String[] args) {
        Level level = Level.MEDIUM;

        Level[] allLevels = Level.values(); // Level에 정의된 모든 상수를 배열로 반환
        for (Level x : allLevels){
            System.out.printf("%s=%d%n", x.name(), x.ordinal()); // 열거 객체가 가지고 있는 문자열 = 열거 객체의 순번
        }

        Level findLevel = Level.valueOf("LOW"); //LOW
        System.out.println(findLevel); // 이름과 일치하는 열거형 상수 반환
        System.out.println(Level.LOW == Level.valueOf("LOW"));// 일치하는지 여부

        switch (level){
            case LOW:
                System.out.println("낮은 레벨");
                break;
            case MEDIUM:
                System.out.println("중간 레벨");
                break;
            case HIGH:
                System.out.println("높은 레벨");
                break;
        }
    }
}

 

 

'공부 > JAVA' 카테고리의 다른 글

[Java] 예외 처리  (0) 2024.07.03
[Java] 제네릭  (0) 2024.07.03
[Java] [레스토랑 키오스크 프로그램]  (0) 2024.07.02
[Java] 다형성  (0) 2024.07.02
[Java] 추상화  (0) 2024.06.29