728x90
열거 타입(Enumeration Type)
한정된 값(ex. 요일, 계절 등)만을 갖는 데이터 타입
한정된 값은 열거 상수(Enumeration Constant)로 정의
열거 타입 선언
열거 타입 소스 파일 생성 : ~.java
열거 타입의 이름은 첫 문자는 대문자로 작성(관례)
Week.java
MemberGrade.java
Productkind.java
소스 작성 방법
파일 이름과 동일한 이름으로 다음과 같이 선언
public enum 열거타입이름 {...}
한정된 값인 열거 상수 정의
- 열거 상수 이름은 관례적으로 모두 대문자로 작성
- 다른 단어가 결합된 이름일 경우 관례적으로 밑줄(_)로 연결
public enum Week { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, ... }
public enum LoginResult { LOGIN_SUCCESS, LOGIN_FAILED }
열거 타입 변수
열거 타입 변수 선언
Week today;
Week reservationDay;
열거 상수값 저장
열가 타입 변수 값은 열거 상수 중 하나이어야 한다.
열거타입 변수 = 열거타입.열거상수;
Week today = Week.SUNDAY;
열거 타입 변수는 참조 타입
열가 타입 변수는 참조 타입이므로 null 값을 저장할 수 있다.
Week birthday = null;
열거 상수는 열거 객체를 참조한다.
열거 객체는 힙에 생성된다.
열거 상수는 메소드 영역에서 열거 객체를 참조한다.
예제)
package sec07.exam01_enum;
import java.util.Calendar;
public class EnumWeekExample
{
public static void main(String[] args)
{
Week today = null;
Calendar cal = Calendar.getInstance(); // Calendar.getInstance() 컴퓨터의 현재 날짜를 리턴해줌.
int week = cal.get(Calendar.DAY_OF_WEEK); //오늘의 요일을 리턴해서 week에 저장
System.out.println(week); // 일요일(1), 월요일(2), 화요일(3), 수요일(4), 목요일(5), 금요일(6), 토요일(7)
switch(week)
{
case 1:
today = Week.SUNDAY;
break;
case 2:
today = Week.MONDAY;
break;
case 3:
today = Week.TUESDAY;
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.lang.Enum 클래스를 자동 상속한다.
열거 객체는 java.lang.Enum 클래스의 메소드를 사용할 수 있다.
name() 메소드
Week today = Week.SUNDAY;
String name = today.name();
ordinal() 메소드
Week today = Week.SUNDAY;
int ordinal = today.ordinal();
compareTo() 메소드
Week day1 = Week.MONDAY; //0
Week day2 = Week.WEDNESDAY: //2
int result1 = day1.compareTo(day2); //-2
int result2 = day2.compareTo(day1); //2
valueOf() 메소드
Week weekDay = Week.valueOf("SATURDAY");
values() 메소드
Week[] days = Week.values();
for(Week day : days)
{
System.out.println(day);
}
예제)
package sec07.exam01_enum;
public class EnumMethodExample
{
public static void main(String[] args)
{
Week today = Week.SUNDAY;
String name = today.name();
System.out.println(name);
int ordinal = today.ordinal();
System.out.println(ordinal);
Week day1 = Week.MONDAY;
Week day2 = Week.WEDNESDAY;
int result1 = day1.compareTo(day2);
int result2 = day2.compareTo(day1);
System.out.println(result1);
System.out.println(result2);
Week weekday = Week.valueOf("SUNDAY");
if(weekday == Week.SATURDAY || weekday == Week.SUNDAY)
{
System.out.println("주말");
}
else
{
System.out.println("평일");
}
Week[] days = Week.values();
for(Week day : days)
{
System.out.println(day);
}
}
}
728x90
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
[JAVA] 객체와 클래스 (0) | 2021.06.18 |
---|---|
[JAVA] 객체 지향 프로그래밍 (0) | 2021.06.18 |
[JAVA] 배열 타입(2) (0) | 2021.06.16 |
[JAVA] 배열 타입(1) (0) | 2021.06.15 |
[JAVA] String 타입 (0) | 2021.06.11 |