본문 바로가기

JAVA/혼자공부하는자바

[JAVA 기초] 열거 타입

728x90

데이터 중에는 몇 가지를 한정된 값만을 갖는 경우가 있다.

ex) 4계절 : 봄, 여름, 가을, 겨울

ex) 달력 : 1월, 2월, 3월... ,12월

이러한 한정된 값을 갖는 타입을 열거 타입이라고 한다.

 

 

열거 타입

열거 상수(한정된 값)를 저장하는 타입

위와 같이 Week 열거 타입을 선언하면 해당 타입으로는 선언된 상수만을 사용할 수 있게 된다.

Week today;
today = Week.FRIDAY;

 

열거 타입 선언

  • 소스파일(.java) 생성
  • 열거 타입 선언
public enum 열거타입이름 { ... }

열거 타입의 키워드는 enum이다.

public enum Week {MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY}
    // (열거타입 이름) /              열거 상수

 

열거 상수는 열거 객체로 생성되어 위와 같은 형식으로 메모리(힙 영역)에 저장되며 열거 타입 또한 참조 타입에 포함된다.


열거 타입 변수 선언

열거타입 변수;
Week today;
Week reservationDay;

위와 같은 변수를 Week 열거 타입으로 선언하게 되면 위 변수에는 열거 상수만을 저장할 수 있게 된다.

 

열거 상수 저장

열거타입 변수 = 열거타입.열거상수;
Week today = Week.SUNDAY;
today == Week.SUNDAY;  //true

 

메서드 영역에 있는 SUNDAY 열거 상수가 힙 영역에 생성되어 있는 Week 열거 객체를 참조하고

Week 열거 타입으로 선언한 스택 영역에 있는 today 변수에 열거 상수 SUNDAY를 저장하면 Week 열거 객체를 참조하게 되어 SUNDAY가 참조하는 객체와 today가 참조하는 객체의 번지는 같다.

 

 

 

Week birthday = null;

열거 타입 또한 참조 타입이므로 위와 같이 열거 변수의 저장 값으로 null을 저장할 수 있다.