반응형
안녕하세요. 이번 포스팅에서는 enum 클래스에 대해 알아보겠습니다.
enum
enum은 enumerate를 줄여쓰는 단어로 '열거하다'라는 의미를 갖고 있습니다.
JDK1.5 버전부터 기존의 C언어와 C++에서 사용된 열거체보다 더욱 향상된 성능의 열거체를 정의한 Enum 클래스를 사용할 수 있게 되었습니다.
우리는 프로그래밍을 하다보면 공통적으로 한정된 데이터를 다루는 경우가 많습니다.
예를 들자면 '계절', '태양계 행성', '요일' 등이 있습니다.
이렇게 한정된 데이터는 하나의 열거형으로 묶어주면 편리하게 관리할 수 있습니다.
Enum 클래스 선언 방법
클래스 외부에서 선언하는 방법
enum Season {
SPRING, SUMMER, FALL, WINTER
}
클래스 내부에서 선언하는 방법
public class EnumExample {
public enum Season {
SPRING, SUMMER, FALL, WINTER
}
}
Enum 클래스 사용 방법
// 클래스 외부에서 선언
enum Season {
SPRING, SUMMER, FALL, WINTER
}
public class EnumExample {
public String name; // 이름
public String likeSeason; // 좋아하는 계절
public Season hateSeason; // 싫어하는 계절
public static void main(String[] args) {
EnumExample person = new EnumExample();
person.name = "가나다";
person.likeSeason = Season.SUMMER;
person.hateSeason = Season.WINTER;
System.out.println("이름: " + person.name);
System.out.printf("좋아하는 계절: %s, 싫어하는 계절: %s", person.likeSeason, person.hateSeason);
}
}
열거객체 메서드
valueOf()
enum Season {
SPRING, SUMMER, FALL, WINTER
}
public class EnumExample {
public static void main(String[] args) {
Season season = Season.valueOf("WINTER");
System.out.println(season); //가을
}
}
valueOf() 메서드는 인자로 주어지는 문자열과 동일한 문자열을 가지는 열거 객체를 리턴합니다.
values()
enum Season {
SPRING, SUMMER, FALL, WINTER
}
public class EnumExample {
public static void main(String[] args) {
// enhanced for loop
for (Season season : Season.values()) {
System.out.println(season); // SPRING, SUMMER, FALL, WINTER 차례로 출력
}
}
}
values() 메서드는 열거 타입의 모든 열거객체들을 배열로 만들어 리턴합니다.
ordinal()
enum Season {
SPRING, SUMMER, FALL, WINTER
}
public class EnumExample {
public static void main(String[] args) {
Season season = Season.WINTER;
System.out.println(season.ordinal()); // 3
}
}
Ordinal() 메서드는 전체 열거 객체 중 몇 번째의 객체인지 리턴합니다.
순번은 배열과 마찬가지로 0부터 인덱스가 시작됩니다.
반응형
'Programming > Java' 카테고리의 다른 글
[Java] 캡슐화와 은닉성에 대해 알아보자 (0) | 2020.10.02 |
---|---|
[Java] String / StringBuilder / StringBuffer의 차이점은 무엇일까? (0) | 2020.09.27 |
[Java] 메서드 정적 바인딩과 동적 바인딩 (0) | 2020.07.05 |
[Java] 참조형식과 호출되는 메서드의 관계 (0) | 2020.07.04 |
[Java] Log4j에 대해 알아보자 (0) | 2019.11.11 |