Enum이란?
- Enum은 "Enumeration"의 약자로, "열거, 목록, 일람표"라는 뜻을 가지고 있으며 한글로는 열거형이라고 부른다.
- 즉, 열거형(enum)은 요소, 멤버라 불리는 명명된 값의 집합을 이루는 자료형으로, 상수 데이터들의 집합이다.
- 프로그래밍을 하다보면 배열이나 리스트 등 여러 개의 묶음 데이터를 다루는 일이 많다.
- 이 묶음 데이터 중에는 데이터 주제에 따라 몇가지로 한정된 값만을 가는 경우가 존재한다.
- ex) 요일, 계절, 주사위 등
- 이와 같이 정해져 있는 한정된 데이터 묶음을 열거형 타입인 Enum으로 묶어주면 보다 구조적으로 프로그래밍을 할 수 있다.
Enum 장점
- 코드가 단순해지며 가독성이 좋아진다.
- 허용 가능한 값들을 제한하여 유형 안전을 제공한다.
- 키워드 enum을 사용하기 때문에 구현의 의도가 열거임을 분명하게 나타낼 수 있다.
- 자체 클래스 상수와 달리 switch문에서도 사용할 수 있다.
- 리팩토링시 변경 범위가 최소화된다.
(Enum에서 한번에 관리하기 때문에 내용의 추가가 필요하더라도, Enum 코드 외에 수정할 필요가 없다.) - enum은 본질적으로 싱글톤 객체이므로 싱글톤 클래스를 생성하는 데에도 사용된다.
Enum 선언
열거 타입은 상수 데이터들의 집합이므로 아래와 같이 배열처럼 나열하여 표시하면 된다.
- enum명은 클래스와 같이 첫 문자를 대문자로 하고 나머지는 소문자로 구성한다.
- 관례적으로, 열거 상수는 대문자로 작성한다.
- 열거 상수가 여러 단어로 구성될 경우, 단어 사이를 밑줄 (_)로 연결한다.
// 요일 열거 타입
enum Week {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
}
// 계절 열거 타입
enum Season {
Spring,
Summer,
Autumn,
Winter
}
enum LoginResult {
LOGIN_SUCCESS,
LOGIN_FAILED
}
Enum 참조 방식
Enum 타입 객체도 하나의 데이터 타입이므로 변수를 선언하고 사용하면 된다.
// 열거타입 변수 = 열거타입.열거상수;
Week monday = Week.MONDAY;
Week sunday = Week.SUNDAY;
- enum 타입은 특수한 클래스
- 즉, primitive 타입이 아닌 reference 타입으로 분류되며, enum 상수 값은 힙(heap) 영역에 저장된다.
- String처럼 스택 영역에 있는 변수들이 힙 영역에 있는 데이터의 주소 값을 저장함으로써 참조 형태를 띄게 된다.
- 같은 enum 타입 변수낄 같은 상수 데이터를 바라봄으로써 둘이 주소를 비교하는 == 연산 결과는 true가 된다.
Week today = null; // 참조 타입이기 때문에 null도 저장 가능
today = Week.SUNDAY;
// 주소값 비교
System.out.println(today == Week.SUNDAY); // true
참고 자료
Java - 메모리 구조(Method, Stack, Heap)
자바 프로그램이 실행되면 JVM(자바 가상 머신)은 OS로부터 메모리를 할당받고, 그 메모리를 용도에 따라서 여러 영역으로 나누어 관리를 한다.JVM의 메모리 공간(Runtime Data Area)은 크게 Method(Static)
velog.io
☕ 자바 Enum 열거형 타입 문법 & 응용 💯 정리
Enum 열거 타입 먼저 Enum은 "Enumeration"의 약자다. Enumeration은 "열거, 목록, 일람표" 라는 뜻을 가지고 있으며, 보통 한글로는 열거형이라고 부른다. 즉, 열거형(enum)은 요소, 멤버라 불리는 명명된 값
inpa.tistory.com
'JAVA > STUDY' 카테고리의 다른 글
[Java] Optional 사용 (0) | 2025.04.10 |
---|---|
[JAVA] 멀티 스레드(1) (2) | 2024.02.15 |
[JAVA] 배열 (Array) (2) | 2024.02.14 |
[JAVA] 조건문과 반복문(if, switch, for, while문) (3) | 2024.02.12 |
[JAVA] 자바 변수, 선언, 초기화 (2) | 2024.02.12 |