반응형
enum (열거형)
: 상수를 대체하기 위해 나온 문법으로, 상수로 사용할 값을 미리 선언하여 사용할때 쓰는 데이터 타입이다.
데이터값을 정해 줄 경우에는 생성자를 만들어서 괄호속의 값이 변수에 저장되도록 해야한다.
- 선언 방법
enum 열거형이름 {상수값1, 상수값2, 상수값3, ..., 상수값n};
- 주요 사용 메소드
사용법 | 뜻 |
name() | 열거형 상수객체의 이름을 문자열로 반환한다. |
ordinal() | 열거형 상수가 정의된 순서값을 반환한다. (기본적으로 0부터 시작함) |
valueOf("열거형상수이름") | 지정된 열거형에서 '열거형상수이름'과 일치하는 열거형 상수객체를 반환한다. |
ex)
- enum 사용 전
장미가 아닌데도 장미로 출력되는 문제가 존재함
package kr.or.ddit.basic;
class Flower {
static final int ROSE = 1;
static final int TULIP = 2;
}
class Animal {
static final int LION = 1;
static final int TIGER = 2;
}
public class T07EnumTest {
public static void main(String[] args) {
int a = Animal.LION;
if(a == Flower.ROSE) {
System.out.println("이것은 장미가 확실합니다.");
}
}
}
- enum 사용
package kr.or.ddit.basic;
/*
* 열거형 => 상수값들을 선언하는 방법
*
* static final int A = 0;
* static final int B = 1;
* static final int C = 2;
* static final int D = 3;
*
* enum Data {A, B, C, D};
*
* 열거형 선언하는 방법
* enum 열거형이름 {상수값1, 상수값2, 상수값3, ..., 상수값n};
*
*/
public class T07EnumTest {
// City 열거형 객체 선언(기본값을 이용하는 열거형)
public enum City {서울, 부산, 대구, 광주, 대전};
// 데이터값을 임의로 지정한 열거형 객체 선언
// 데이터값을 정해 줄 경우에는 생성자를 만들어서 괄호속의 값이 변수에 저장되도록 해야한다.
public enum Season{
봄("3월부터 5월까지"), 여름("6월부터 8월까지"), 가을("9월부터 11월까지"), 겨울("12월부터 2월까지");
// 괄호속의 값이 저장될 변수 선언
private String data;
// 생성자 만들기(열거형의 생성자는 제어자가 묵시적으로 'private'이다.)
// private으로 class에서만 접근이 가능하여 다른 것을 추가하는 걸 방지한다.
Season(String data) {
this.data = data;
}
// getter메서드
public String getData() {
return data;
}
}
public static void main(String[] args) {
/*
* 열거형에서 사용되는 주요 메서드
*
* 1. name() => 열거형 상수객체의 이름을 문자열로 반환한다.
* 2. ordinal() => 열거형 상수가 정의된 순서값을 반환한다. (기본적으로 0부터 시작함)
* 3. valueOf("열거형상수이름") => 지정된 열거형에서 '열거형상수이름'과 일치하는 열거형 상수객체를 반환한다.
*/
City myCity1; // 열거형 객체변수 선언
City myCity2; // 열거형 객체변수 선언
myCity1 = City.서울;
myCity2 = City.valueOf("서울");
System.out.println("myCity1 : " + myCity1.name());
System.out.println("myCity1의 ordinal : " + myCity1.ordinal());
System.out.println();
System.out.println("myCity2 : " + myCity2.name());
System.out.println("myCity2의 ordinal : " + myCity2.ordinal());
System.out.println("===========================================");
Season ss = Season.valueOf("여름");
System.out.println("name => " + ss.name());
System.out.println("ordinal => " + ss.ordinal());
System.out.println("getter메서드 호출 => " + ss.getData());
System.out.println("--------------------------------------------");
// 열거형이름.values() => 열거형 상수 배열로 가져온다.
Season[] enumArr = Season.values();
for (Season s : enumArr) {
System.out.println(s.name() + " : " + s.getData());
}
System.out.println();
for (City city : City.values()) {
System.out.println(city + " : " + city.ordinal());
}
System.out.println("===========================================");
City city = City.대구;
System.out.println(city == City.대전);
System.out.println(city == City.대구);
System.out.println();
System.out.println("대구 => " + city.compareTo(City.대구)); // index 값을 비교하여 뻄
System.out.println("서울 => " + city.compareTo(City.서울));
System.out.println("대전 => " + city.compareTo(City.대전));
}
}
반응형
'자바' 카테고리의 다른 글
[Java 고급] 8장 Annotation (0) | 2024.01.27 |
---|---|
[Java 고급] 7.5장 Test (0) | 2024.01.27 |
[Java 고급] 6장 제한된 타입 파라미터 문법, 와일드카드 (1) | 2024.01.27 |
[Java 고급] 5장 가변형 인수, Generics 클래스&메소드 (1) | 2024.01.27 |
[Java 고급] 4장 Properties (0) | 2024.01.27 |