랩터
[Java] 열거형 본문
열거형(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 |