728x90
728x90
이 게시글은 남궁성의 정석코딩 - 자바의 정석 기초편(2020최신)을 보고 공부한 내용을 정리한 게시글입니다.
틀린 내용이 있을 수 있습니다.
열거형
- 관련된 상수들을 하나로 묶어 놓은 것을 말한다.
- 열거형에는 상수만 올 수 있다.
- enum으로 묶인 각각의 상수는 객체이다.
enum 열거형이름 {상수명1, 상수명2, ...}
// 열거형으로 변경 전
class Season{
static final String SPRING;
static final String SUMMER;
static final String AUTUMN;
static final String WINTER;
}
// 열거형으로 변경
enum Season{SPRING, SUMMER, AUTUMN, WINTER};
// 호출
public class Test {
public static void main(String[] args){
Season season = Season.AUTUMN;
System.out.println(season); //AUTUMN
System.out.println(Season.WINTER); //WINTER
}
}
간단 설명
- Season 클래스 안에 있는 SPRING, SUMMER, AUTUMN, WINTER 상수를 열거형으로 변환했다.
- 호출할 때는 클래스명을 앞에 붙여주고 상수를 적어주면 된다.
- Season season에는 Season 안에 있는 값만 들어올 수 있다.
열거형 비교
- Java의 열거형은 타입에 안전하다.
비교할 때 타입과 값이 있는데, C언어는 값만 비교해서 타입이 달라도 값이 같으면 true를 반환한다.
반면에 Java는 타입과 값을 모두 비교한다.
- ==
와 compareTo()
, equals()
는 사용할 수 있지만 비교연산자는 사용할 수 없다. (객체이기 때문에)
Season season = Season.AUTUMN;
System.out.println(season == Season.AUTUMN); // true
System.out.println(season.compareTo(Season.AUTUMN)); // 0
System.out.println(season.compareTo(Season.WINTER)); // -1
System.out.println(season.compareTo(Season.SPRING)); // 2
System.out.println(season > Season.SPRING); // 에러
Enum 클래스의 메서드
아래 열거형 Season은 공통으로 들어간다.
enum Season{SPRING, SUMMER, AUTUMN, WINTER };
String name()
열거형 상수의 이름을 문자열로 반환한다.
public class Test {
public static void main(String[] args){
Season season = Season.AUTUMN;
System.out.println(season.name()); // AUTUMN
}
}
int ordinal()
열거형 상수가 정의된 순서를 반환한다.
public class Test {
public static void main(String[] args){
Season season = Season.AUTUMN;
System.out.println(season.ordinal()); // 2
}
}
values()
열거형의 모든 객체들을 배열로 반환한다.
public class Test {
public static void main(String[] args){
System.out.println(Season.values()); //[Ltest.Season;@5ca881b5
for(Season season : Season.values()) {
System.out.print(season + " "); //SPRING SUMMER AUTUMN WINTER
}
}
}
valueOf()
매개변수 값으로 주어지는 문자열과 동일한 문자열을 가지는 객체를 반환한다.
public class Test {
public static void main(String[] args){
Season season = Season.valueOf("WINTER");
System.out.println(season); //WINTER
}
}
열거형에 멤버 추가하기
열거형 상수에 원하는 값을 추가할 수 있다.
enum Season{SPRING("봄", 3), SUMMER("여름", 7), AUTUMN("가을", 9), WINTER("겨울", 12) };
이 값들이 제 기능을 하기 위해선 값의 개수만큼 변수를 선언해야 하고, 이 값을 받을 수 있는 생성자를 추가해야 한다.
enum Season{
SPRING("봄", 3), SUMMER("여름", 7), AUTUMN("가을", 9), WINTER("겨울", 12);
private final String KOR;
private final int MONTH;
Season(String KOR, int MONTH){
this.KOR = KOR;
this.MONTH = MONTH;
}
};
KOR
과 MONTH
를 가져오는 메서드를 추가하면 아래와 같이 만들 수 있다.
enum Season{
SPRING("봄", 3), SUMMER("여름", 7), AUTUMN("가을", 9), WINTER("겨울", 12);
private final String KOR;
private final int MONTH;
Season(String KOR, int MONTH){
this.KOR = KOR;
this.MONTH = MONTH;
}
public String getKOR() {
return KOR;
}
public int getMONTH() {
return MONTH;
}
};
public class Test {
public static void main(String[] args){
System.out.println(Season.SPRING.getKOR()); //봄
System.out.println(Season.SPRING.getMONTH()); //3
}
}
728x90
728x90
'💻 Study > Java' 카테고리의 다른 글
[Java] 어노테이션 (0) | 2023.03.16 |
---|---|
[Java] 제네릭스2 (0) | 2023.03.14 |
[Java] 제네릭스1 (0) | 2023.03.13 |