enum(열거형)은 자바에서 제공하는 데이터 타입 중 하나이.
enum은 서로 관련 있는 상수 값을 정의할 때 사용된다.
예를 들어, 요일을 나타내는 상수를 정의할 때 enum을 사용할 수 있다.
enum을 정의할 때는 enum 키워드를 사용하며, 각 상수 값을 나열한다.
상수 값은 모두 대문자로 작성하며, 값 사이에 쉼표(,)를 사용하여 구분한다.
각 상수 값은 해당 enum타입의 객체이며, enum타입의 객체를 생성할 때는 new키워드를 사용하지 않는다.
enum은 switch 문에서 사용될 수 있으며, 각 상수 값은 해당 enum 타입의 객체이기 때문에 객체지향적인 설계를 할 수 있다.
아래는 enum을 정의하는 예시 코드이다.
public enum Weekday {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
}
위 코드는 Weekday라는 enum 타입을 정의한다. Weekday 타입의 객체는 MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY 값 중 하나를 가지며, 이 값은 변경할 수 없다.
Weekday 타입의 객체를 사용하려면 다음과 같이 코드를 작성한다.
Weekday day = Weekday.MONDAY;
if (day == Weekday.MONDAY) {
System.out.println("Today is Monday");
}
위 코드는 Weekday 타입의 day 변수를 생성하고, 이 변수를 Weekday.MONDAY로 초기화한다.
if 문에서 day 변수가 Weekday.MONDAY와 같은지 확인하며, 같으면 "Today is Monday"을 출력한다.
enum은 switch 문에서 사용할 때도 유용하다.
Weekday day = Weekday.MONDAY;
switch (day) {
case MONDAY:
System.out.println("Today is Monday");
break;
case TUESDAY:
System.out.println("Today is Tuesday");
break;
case WEDNESDAY:
System.out.println("Today is Wednesday");
break;
// ...
}
위 코드는 Weekday 타입의 day 변수를 생성하고, 이 변수를 Weekday.MONDAY로 초기화한다.
switch 문에서 day 변수의 값에 따라 각각 다른 동작을 수행한다.
예를 들어, day 변수가 Weekday.MONDAY와 같으면 "Today is Monday"을 출력한다.
enum은 서로 관련 있는 상수 값을 정의할 때 유용한 데이터 타입이다.
enum은 객체지향적인 설계를 할 수 있으며, switch 문에서 사용할 때도 유용하다. enum을 사용하면 코드의 가독성을 높일 수 있고, 상수 값에 대한 오타나 잘못된 값의 입력을 방지할 수 있다.
또한, enum은 인터페이스를 구현할 수 있어, 인터페이스를 구현하는 경우 사용될 수 있다.
name() : enum 상수의 이름을 문자열로 반환
ordinal() : enum 상수가 정의된 순서(0부터 시작)를 반환
valueOf(String name) : 주어진 이름(name)에 해당하는 enum 상수를 반환
values() : enum에 정의된 모든 상수 배열을 반환
이 중 valueOf(String name) 메소드를 사용하면, 문자열에 해당하는 enum 상수를 찾을 수 있다.
예를 들어, Weekday enum에서 "MONDAY" 문자열에 해당하는 enum 상수를 찾으려면 다음과 같이 코드를 작성한다.
Weekday day = Weekday.valueOf("MONDAY");
위 코드는 "MONDAY" 문자열에 해당하는 enum 상수를 day 변수에 할당한다.
이 때, 문자열이 대소문자를 구분하므로, 대문자 "MONDAY"를 입력해야 한다.
enum은 자바에서 자주 사용되는 데이터 타입 중 하나이며, 서로 관련 있는 상수 값을 정의할 때 유용하다.enum은 객체지향적인 설계를 할 수 있고, 상수 값에 대한 오타나 잘못된 값의 입력을 방지할 수 있다.