-
[JAVA] 열거 타입@떤떤/#JAVA 2020. 4. 11. 20:46
열거 타입(enumeration type)이란 ?
- 한정된 값만을 갖는 데이터 타입이다.
- 예를 들면 계절에 대한 데이터는 봄, 여름, 가을, 겨울이라는 네 개의 값만을 가진다. 이와 같은 한정된 값을 말한다
- 열거 타입은 몇 개의 열거 상수(enumeration constant) 중에서 하나의 상수를 저장하는 데이터 타입이다.
<열거 타입 선언>
- 먼저 열거 타입의 이름을 정하고 열거 타입 이름으로 소스 파일(.java)을 생성해야 한다.
- 열거 타입 이름은 첫 문자는 대문자로, 나머지는 소문자로 구성한다.
- ex)Week.java , MemberGrade.java
package solution; public enum Week { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }
- public enum Week는 열거 타입을 선언하기 위한 코드이고 열거 타입 이름은 소스 파일명과 대소문자가 일치해야된다.
- 열거 타입을 선언하고 열거 상수를 선언하는데 열거 상수는 모두 대문자로 작성해야된다.
<열거 타입 변수 선언>
- 열거 타입도 하나의 데이터 타입이기때문에 변수를 선언하고 사용해야 한다.
- 열거 타입 변수는 null값을 저장할 수 있는데 열거 타입도 참조 타입이기 때문이다. (Week birthday = null;)
- 열거 상수는 열거 객체로 생성된다. 열거 타입 Week의 경우 MONDAY부터 SUNDAY까지의 열거 상수는 총 7개의 Week 객체로 생성된다. 그리고 메소드 영역에 생성된 열거 상수가 해당 Week객체를 각각 참조하게 된다.
열거타입 변수;
→Week today;
열거타입 변수 = 열거타입.열거상수;
→Week today = Week.SUNDAY;
<Week today = Week.SUNDAY 코드를 보자>
- 열거 타입 변수 today는 스택 영역에 생성된다.
- today에 저장되는 값은 Week.SUNDAY 열거 상수가 참조하는 객체의 번지이다.
- 따라서 열거 상수 Week.SUNDAY와 today 변수는 서로 같은 Week 객체를 참조하게 된다.
- 그렇기 때문에 today == Week.SUNDAY 의 결과가 true이다.
example) Calendar를 이용한 오늘의 요일 얻고 열거 타입 변수 today에 해당 열거 상수 대입하기
package solution; import java.util.Calender; public class Solution { public void enumWeekExam(){ 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.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 : "+today); if(today==Week.SATURDAY||today==Week.SUNDAY){ System.out.println("행복한 주말입니다."); }else{ System.out.println("오늘도 열심히 공부합시다."); } } public static void main(String[] args) { Solution sl = new Solution(); sl.enumWeekExam(); } }
'@떤떤 > #JAVA' 카테고리의 다른 글
[JAVA] 약수의 합을 구하는 프로그램 (0) 2020.04.15 [JAVA] 삼항 연산자 (0) 2020.04.10