티스토리 뷰

배운 것 기록/java

enum

키죽 2022. 6. 10. 20:11

enum

상수를 간편한 선언으로 한정된 데이터를 관리 가능하나 컴파일 시점에서 오류가 나면 발견하기 어려워

범위 내의 값인지 판별하는 작업이 필요한데 이때 열거형(enum type)이 필요하다

[접근제한자] enum 열거타입명 {
	// 중괄호 내에는 값을 갖는 상수 이름만 나열(별도의 값을 지정하지 않음)
	상수, 차례대로, 나열;	// 대문자로 쓰임, 각각 하나의 객체
}

- 클래스, 인터페이스 정의 문법과 유사하나 중괄호 내에는 상수로 사용될 이름만 지정

- 지정된 상수 외 다른 값은 전달이 불가능하다.

 

public class Ex2 {

	public static void main(String[] args) {
		
		Ex2 ex2 = new Ex2();
//		compareEnum();	// static 이라서 안됨
//		ex2.compareEnum(Season.SPRING);	// 객체로 접근
//		ex2.compareEnum(Season.SUMMER);	// 객체로 접근
		ex2.cEnum(Season.FALL);		// FALL : 2	하반기!
		ex2.cEnum(Season.SPRING);	// SPRING : 0	봄!
		
	}

	public void cEnum(Season s) {	// enum 타입(Season타입) 객체(s) 전달

		System.out.println(s.name() + " : " + s.ordinal());
		
		if(s==Season.SPRING) {
			System.out.println("봄!");
		} else if(s==Season.SUMMER) {
			System.out.println("여름!");
		} else if(s.compareTo(s.WINTER) >= -1) {
			System.out.println("하반기!");
		}
	
	}
}
enum Season {	// ordinal 각각 0, 1, 2, 3
	// enum 타입 내의 상수는 자동으로 ordinal 값(순서번호) 부여 (0부터 자동으로 부여)
	SPRING, SUMMER, FALL, WINTER
}

name() 메서드

상수명 리턴

 

ordinal() 메서드

상수의 ordinal 값 리턴

 

season 객체의 ordinal 값 - 파라미터로 전달된 상수의 ordinal 값 결과를 리턴

 

public class Test1 {

	public static void main(String[] args) {

		Week w = Week.MON;	// 주중!
		
		switch (w) {
		case MON:	
		case TUE:	
		case WED:	
		case THUR:	System.out.println("주중!"); break;
		case FRI:	System.out.println("불금!"); break;
		case SAT:	
		case SUN:	System.out.println("주말^^"); break;
		}
		
	}
}
enum Week {
	MON, TUE, WED, THUR, FRI, SAT, SUN;
}

 

'배운 것 기록 > java' 카테고리의 다른 글

Set, List  (0) 2022.06.18
Wrapper  (0) 2022.06.14
interface  (0) 2022.06.08
abstract 추상화  (0) 2022.06.07
레퍼런스 형변환  (0) 2022.06.02
댓글
최근에 올라온 글
«   2024/12   »
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
글 보관함