일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 백엔드
- 애플리케이션 계층
- linux
- 웹개발
- 깃헙
- 코리안챔버오케스트라
- jsx
- 네트워크 계층
- 서울청년문화패스
- 알고리즘
- 위상 정렬
- Upstream
- React
- 비동기 처리
- 자바
- 진입차수
- 동적 프로그래밍
- 예술의 전당
- 우테코
- 프리코스
- 커밋메시지
- webhacking
- 트랜스포트 계층
- 프랑스어 #프랑스어배우기 #프랑스어독학 #델프인강 #시원스쿨프랑스어 #delf독학 #델프 #프랑스어기초 #프랑스어공부
- c
- 선우예권
- Dreamhack
- 우아한테크코스
- 깃
- 다이나믹 프로그래밍
- Today
- Total
yon11b
[우아한테크코스] 백엔드(자바) 프리코스 3주차 -Enum 본문
ENUM~!!
상수 그룹을 나타내는 특수한 클래스이다.
흔히 상수를 정의할 때 final static string과 같은 방식으로 상수를 정의한다. 하지만 이렇게 상수를 정의하면 다양한 문제가 발생한다. 따라서 이런 문제점들을 보완하기 위해 JDK 1.5 부터 추가된 것이 Enum이다.
Enum은 열거체라고 불리며, 서로 연관된 상수들의 집합을 의미한다.
클래서처럼 변수와 메소드를 가질 수 있지만, 상속이나 인스턴스를 생성할 수는 없으며, enum값은 상수로 public, static, final 속성을 가지고 있어 변경될 수 없다.
열거형의 이름은 보통 첫글자를 대문자로 시작한다.
장점
- 열거체를 비교할 때 실제 값뿐만 아니라 타입까지도 체크한다.
- 열거체의 상숫값이 재정의되더라도 다시 컴파일할 필요가 없다.
- 다양한 상수를 같은 의미로 묶을 수 있다.
- “Y”, “1”, true 를 한 묶음으로
- 반복적인 if 문을 줄일 수 있다.
4. 상수에 특정 행위(메소드)를 지정할 수 있다.
5. enum type안에 메소드를 선언할 수 있다.
정의 및 사용
<정의>
문법
enum 열거체이름 {상수1이름, 상수2이름,...}
예제
enum Rainbow{RED,ORANGE,YELLOW}
<사용>
문법
열거체이름.상수이름
예제
Rainbow.RED
열거체의 상숫값 정의 및 추가
열거체의 첫 번째 상수값은 0부터 설정된다.
그 다음부터는 바로 앞의 상숫값보다 1만큼 증가되어 설정된다.
불규칙한 값을 상숫값으로 설정하고 싶으면 이름 옆에 괄호()을 추가하고, 그 안에 원하는 상숫값을 명시할 수 있다.
하지만, 이는 불규칙한 특정값을 저장할 수 있는 인스턴스 변수와 생성자를 다음 예제와 같이 별도로 추가해야 한다.
enum Rainbow{
RED(3), ORANGE(10), YELLOW(21), GREEN(5);
private final int value;
Rainbow(int value){this.value=value;}
public int getValue(){return value;}
Enum 클래스는 모든 자바 열거체의 공통된 조상 클래스이다. Enum 클래스에는 열거체를 조작하기 위한 다양한 메소드가 포함되어 있다.
values() 메소드
values() 메소드는 해당 열거체의 모든 상수를 저장한 배열을 생성하여 반환한다.
이 메소드는 자바의 모든 열거체에 컴파일러가 자동으로 추가해 주는 메소드이다.
enum Rainbow{RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET}
public class Enum01{
public static void main(String[] args){
Rainbow[] arr=Rainbow.values();
for (Rainbow rb : arr){
System.out.println(rb);
}
}
}
- 실행결과ORANGEGREENINDIGO
- VIOLET
- BLUE
- YELLOW
- RED
valueOf() 메소드
전달된 문자열과 일치하는 해당 열거체의 상수를 반환한다.
enum Rainbow { RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET }
public class Enum02 {
public static void main(String[] args) {
Rainbow rb = Rainbow.valueOf("GREEN");
System.out.println(rb); // "GREEN"
}
}
ordinal() 메소드
해당 열거체 상수가 열거체 정의에서 정의된 순서(0부터 시작)를 반환한다.
이때 반환되는 값은 열거체 정의에서 해당 열거체 상수가 정의된 순서이며, 상숫값 자체가 아님을 명심해야 한다.
enum Rainbow { RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET }
public class Enum03 {
public static void main(String[] args) {
int idx = Rainbow.YELLOW.ordinal();
System.out.println(idx); // 2
}
}
참고 링크
'언어 > Java' 카테고리의 다른 글
[우아한테크코스] 백엔드(자바) 프리코스 2주차 -JUnit (1) | 2022.12.21 |
---|