코딩 이야기
JAVA열거타입 본문
열거타입은 한정된 값인 열거상수 중에서 하나의 상수를 저장하는 타입입니다.
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("열심히 자바 공부를 합니다.");
}
}
}
'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 |