ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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

    댓글

Designed by Tistory.