[오늘 공부한 부분]

 

1. Java 열거 타입

 


1. 열거 타입

  • 열거 타입(enumeration type) : 한정된 값만을 갖는 타입
  • 열거 상수(enumeration constant) : 열거 타입은 한정된 값인 열거 상수 중에서 하나의 상수를 저장하는 타입이다.

  • 여기서 Week가 열거 타입이고, MONDAY ~ SUNDAY는 열거 상수이다.
  • Week로 다음과 같이 변수를 선언할 수 있다 : Week today;  
  • today 변수에 저장할 수 있는 건 Week에 선언된 7개의 열거 상수 중 하나이다 : today = Week.FRIDAY;

 

참고로 인텔리제이에서는 클래스를 만들 때 enum파일을 설정할 수 있다.

 

 

2. 열거 타입 선언

  • 먼저 열거 타입의 이름을 정하고 해당 이름으로 소스파일(.java)를 생성한다.
  • 열거 타입의 이름은 관례적으로 첫 글자를 대문자로 하고 나머지는 소문자로 구성한다. : Week.java
  • 만약 여러 단어로 구성된 이름이라면 각 단어의 첫 글자는 대문자로 하는 것이 관례 이다. : ProductKind.java
  • 열거 상수관례적으로 모두 대문자로 작성한다. : MONDAY ... SUNDAY
  • 만약 열거 상수가 여러 단어로 구성될 경우 단어 사이를 (_)로 연결한다. : LOGIN_SUCCESS
public enum 열거타입이름 {열거 상수1, 열거 상수2, ...}

 

 

3. 열거 타입 변수

  • 아래와 같이 열거 타입 변수를 선언할 수 있다.
  • 열거 타입 변수를 선언했다면, 열거 상수를 '열거타입.열거상수' 형태로 저장할 수 있다.
  • 열거 타입 변수도 null 값을 저장할 수 있다.
Week today; // 열거 타입 변수 ㅅ선언

Week today = Week.SUNDAY; //다음과 같이 열거 상수 저장

Week birthday = null; //열거 타입 역시 참조 타입이기 때문에 null값을 저장할 수 있다.

 

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

 

※ 열거 타입 Week를 이용하려면 날짜 정보가 필요하다.

이때 Calendar 클래스를 사용한다

Calendar now = Calendar.getInstance();

Calendar 객체를 얻었다면 get()메소드를 이용해서 다음과 같이 얻을 수 있다.

int year = now.get(Calendar.YEAR); //연
int month = now.get(Calendar.MONTH)+1; // 월
int day = now.get(Calendar.DAY_OF_MONTH); //일
int week = now.get(Calendar.DAY_OF_WEEK); //요일
int hour = now.get(Calendar.HOUR);//시
int minute = now.get(Calendar.MINUTE); //분
int second = now.get(Calendar.SECOND); //초

Calendar를 사용하기 위해서는 import문이 필요하다 : import java.util.Calendar; 

 

 

※ 열거 타입과 열거 상수 예시

  • Calendar를 사용하기 위해 인텔리제이가 자동으로 import해주었다.
  • 열거 타입 변수를 선언하고, Calendar 클래스를 통해 오늘 요일 값을 받는다.

  • 열거 변수 today에 열거 상수를 대입해 준다.

  • 실행해 보면, 이 글을 작성하는 오늘은 토요일이기 때문에, 다음과 같은 값을 얻을 수 있다.

 

'Coding > Java' 카테고리의 다른 글

[10] JAVA - 필드(Field)  (0) 2022.11.22
[09] Java 클래스 - 객체 지향 프로그래밍  (2) 2022.11.22
[07] Java 배열  (0) 2022.11.11
[06] Java 참조 타입  (0) 2022.11.11
[05] Java 조건문과 반복문  (0) 2022.11.11

+ Recent posts