코딩 이야기

JAVA열거타입 본문

JAVA

JAVA열거타입

별메아리 2023. 2. 7. 10:21
728x90

열거타입은 한정된 값인 열거상수 중에서 하나의 상수를 저장하는 타입입니다.

public enum week {    week 가 열거타입 이름.    

MONDAY,

TUESDAY,

WEDNESDAY,          ← 열거 상수

THURSDAY,

FRIDAY,

SATURDAY,

SUNDAY

}

Week로 변수 선언

Week today; 

 

today 변수에 저장할 수 있는건 7개의 열거상수 중 하나

today =Week.FRIDAY

 

열거 타입 선언

먼저 열거 타입의 이름을 정하고 해당 이름으로 소스파일(.java)을 생성해야 합니다. 열거 타입의 이름은 첫 글자는 대문자로 하고 나머지는 소문자로 생성해야합니다. 여러 단어로 구성된 이름은 각 단어의 첫 글자를 대문자로 합니다.
예)

Week.java

MemberGrade.java

ProductKind.java

 

 

소스파일의 내용은 열거 타입 선언이 오는데 public enum 키워드를 사용하여 반드시 소문자로 작성합니다.

public enum 열거타입이름 {···}

열거타입을 선언했다면 이제는 열거 상수를 선언합니다. 열거 상수는 열거 타입의 값으로 사용하는데 열거 상수는 모두 대문자로 작성합니다. 열거 상수중 여러 단어로 구성된 단어는 _ 으로 연결하는것이 관례입니다.

 

열거 타입 변수

열거 타입도 하나의 타입이므로 선언하고 사용해야합니다. 다음은 열거 타입 변수를 선언하는 방법입니다.

열거타입 변수;

Week today;

Week reservationDay;

열거 상수는 단독으로 사용할 수 없고 반드시 열거타입.열거상수 형태로 사용됩니다.

열거타입 변수 = "열거타입.열거상수" 형태로 사용됩니다.

 

Week today = Week.SUNDAY;

 열거 타입 변수는 null값을 저장할 수 있는데 열거타입도 참조 타입이기 때문입니다.

Week birthday = null;

 

참조 타입 변수는 객체를 참조하는 변수입니다. 그렇기 때문에 열거상수는 객체이고 열거 타입 변수 Week경우 MODDAY부터SUNDAY까지 총7개의 Week객체로 생성됩니다.

 

다음 코드를 이해해 봅시다.

Week today = Week.SUNDAY;

열거 타입 변수 today는 스택 영역에 생성된다. today에 저장되는 값은 Week.SUNDAY열거상수가 참조하는 객체의 번지이다. 따라서 today와 Week.SUNDAY는 같은 Week 객체를 참조한다.

today == Week.SUNDAY; // true

 

열거타입 Week를 이용하기 위해 날짜정보를 얻어봅시다. 자바는 컴퓨터의 날짜 및 요일,시간을 얻기 위해 Calendar 클래스를 제공합니다. 다음과 같이 Calendar 변수를 선언하고 Calendar.getInstance()메소드로 Calendar 객체를 얻습니다.

Calendar now = Calendar.getInstance();

Calendar 객체를 얻었다면 get() 메소드를 이용해서 연,월,일,요일,시간,분,초를 다음과 같이 얻을 수 있습니다.

int year =now.get(Calendar.YEAR);                              // 연

int month =now.get(Calendar.MONTH);                       // 월(1~12)

int day =now.get(Calendar.DAY_OF_MONTH);           // 일

int week =now.get(Calendar.DAY_OF_WEEK);           // 요일(1~7)

int hour =now.get(Calendar.HOUR);                            // 시간

int minute =now.get(Calendar.MINUTE);                     // 분

int second =now.get(Calendar.SECOND);                   // 초

 

 

열거 타입 선언

package ch05;

public enum Week {
	MONDAY,
	WEDNESDAY,
	THURSDAY,
	FRIDAY,
	SATURDAY,
	SUNDAY
}

 

열거 타입과 열거 상수

package ch05;

import java.util.Calendar;

public class EnumWeekExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Week today = null;       // 열거 타입 변수선언
		
		Calendar cal = Calendar.getInstance();
		int week = cal.get(Calendar.DAY_OF_WEEK);   // 일(1)~토(7) 까지의 숫자를 리턴
		
		switch(week) {
		case 1:
			today = Week.SUNDAY; break;
		case 2:
			today = Week.MONDAY; break;
		case 3:
			today = Week.THURSDAY; break;
		case 4:
			today = Week.WEDNESDAY; break;
		case 5:
			today = Week.THURSDAY; break;
		case 6:
			today = Week.FRIDAY; break;
		case 7:
			today = Week.SATURDAY; break;
		}
		
		System.out.println("오늘 요일:"+ today);
		
		if(today == Week.SUNDAY) {
			System.out.println("일요일에는 축구를 합니다.");
		}else {
			System.out.println("열심히 자바 공부를 합니다.");
		}
	}

}
728x90

'JAVA' 카테고리의 다른 글

JAVA 생성자  (0) 2023.02.08
JAVA 필드  (0) 2023.02.07
JAVA 클래스  (0) 2023.02.06
자바 조건문과 반복문(5일)  (0) 2023.02.02
자바 배열 (5일)  (0) 2023.02.02
Comments