• Home
  • About
    • ming photo

      ming

      studying

    • Learn More
    • Twitter
    • Facebook
    • Instagram
    • Github
    • Steam
  • Archive
    • All Posts
    • All Tags
    • All categories
  • categories
    • HTML+CSS+JavaScript
    • JAVA
    • Algorithm
    • DB
    • JSP
    • 정보처리기사
    • Spring
    • Thymeleaf
    • 기술면접
  • Projects

JAVA-열거타입

08 Feb 2021

* 열거 타입

1.열거 타입(Enumeration Type)

  • 한정된 값만을 갖는 데이터 타입
  • 한정된 값은 열거 상수(Enumeration Constant)로 정의

2.열거 타입 선언

  • 열거 타입 소스 파일 생성 : ~.java
    • 열거 타입 이름의 첫문자 : 대문자로 작성 (관례)
  • 소스 작성 방법
    • 파일 이름과 동일한 이름으로 선언
    • Ex)
        public enum 열거타입이름 {...}
      
    • 한정된 값인 열거 상수 정의
      • 열거 상수 이름은 관례적으로 모두 대문자로 작성
      • 다른 단어가 결합된 이름일 경우 관례적으로 밑줄(_)로 연결
    • Ex)
        public enum Week{MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,...}
        public enum LoginResult {LOGIN_SUCCESS,LOGIN_FAILED}
      

3.열거 타입 변수

  • 열거 타입 변수 선언
    • EX)
        // 열거타입 변수;
        Week today;
        Week reservationDay;
      
  • 열거 상수값 저장
    • 열거 타입 변수 값은 열거 상수 중 하나이어야 한다
    • EX)
        // 열거타입 변수 = 열거타입.열거상수;
        Week today = Week.SUNDAY;
      
  • 열거 타입 변수는 참조 타입
    • 열거 타입 변수는 참조 타입이므로 null 값을 저장할 수 있다
    • EX)
        Week birthday = null;
      
  • 열거 상수는 열거 객체를 참조한다
    • 열거 객체는 힙에 생성된다
    • 열거 상수는 메소드 영역에서 열거 객체를 참조한다 열거타입
  • EX) 실습

      package com.javateam.jse;
    
      import java.util.Calendar;
    
      public class EnumWeekExample {
    
          public static void main(String[] args) {
    	
              Week_thisJava today = null; // 초기화
              // 열거타입 변수 Week_thisJava 에 지정가능한 것은 열거 상수값만 지정가능하다
    
              Calendar cal = Calendar.getInstance(); 
              // getInstance : 내 컴퓨터에 현재 날짜를 Calendar객체로 만들어서 돌려준다
    
              int week = cal.get(Calendar.DAY_OF_WEEK);
              // Calendar의 참조변수 cal을 통해서 get메소드를 사용해 Calendar.DAY_OF_WEEK 으로 지정해주면 get은 오늘의 요일을 돌려준다
    
              System.out.println(week); // 2출력 => 일요일  :1, 월요일 : 2, 화요일 : 3 ...
    
              switch(week) {
              case 1:
                  today = Week_thisJava.SUNDAY;
                  break;
              case 2:
                  today = Week_thisJava.MONDAY;
                  break;
              case 3:
                  today = Week_thisJava.TUESDAY;
                  break;
              case 4: 
                  today = Week_thisJava.WEDNESDAY;
                  break;
              case 5:
                  today = Week_thisJava.THURSDAY;
                  break;
              case 6:
                  today = Week_thisJava.FRIDAY;
                  break;
              case 7:
                  today = Week_thisJava.SATURDAY;
                  break;
                    
              }
              System.out.println("오늘 요일 : " + today); // 오늘 요일 : MONDAY 출력
              // 열거타입 변수 today를 출력 시키면 열거타입 변수가 참조하는 열거 객체의 문자열이 출력된다
              // 열거 객체의 문자열은 열거상수의 이름과 같은 문자열을 가지고 있다
    
              if(today == Week_thisJava.SUNDAY) { 
              // 열거타입 변수가 참조하는 열거 객체와 열거상수가 참조하는 열거객체가 동일한지 비교
                  System.out.println("일요일에는 축구를 합니다");
              }else {
                  System.out.println("열심히 자바 공부합니다");
              }
    
          }
    
      }
    

    4.열거 객체의 메소드

  • 열거 객체는 열거 상수의 문자열을 내부 데이터로 가지고 있다
  • 열거 타입은 컴파일시에 java.lang.Enum 클래스를 자동 상속한다
    • 열거 객체는java.lang.Enum 클래스의 메소드를 사용할 수 있다
  • name() 메소드 : 열거객체의 문자열을 리턴해주는 메소드
    • EX)
        Week today = Week.SUNDAY; 
        // week라고 하는 열거 타입 변수에 SUNDAY라고 하는 상수를 대입
        String name = today.name();
        // today의 name이라는 메소드를 호출하면 name은 열거객체의 문자열 SUNDAY를 리턴해준다
      
  • ordinal()메소드 : 열거객체의 순번(0부터시작)을 리턴해주는 메소드
    • EX)
        Week today = Week.SUNDAY;
        // week라고 하는 열거 타입 변수에 SUNDAY라고 하는 상수를 대입
        int ordinal = today.ordinal();
        // SUNDAY가 선언된순서(1)을 리턴한다
      
  • compareTo() 메소드 : 열거객체를 비교해서 순번 차이를 리턴
  • EX)
     Week day1 = Week.MONDAY;
     // week라는 변수 day1에 열거상수 MONDAY가 대입
     Week day1 = Week.WEDNESDAY;
     // week라는 변수 day2에 열거상수 WEDNESDAY가 대입
     int result1 = day1.compareTo(day2);
     // MONDAY : 순번 0번 WEDNESDAY 순번 2번 으로 
     // 0 - 2 : -2 로 result1에는 -2가 저장된다
     int result2 = day2.compareTo(day1);
     // MONDAY : 순번 0번 WEDNESDAY 순번 2번 으로 
     // 2 - 0 : 2 로 result2에는 2가 저장된다
    
  • valueOF() 메소드 : 주어진 문자열의 열거객체를 리턴
  • EX)
     Week weekDay = Week.valueOF("SATURDAY");
     // valueOF()에 문자열로 정보를 주면 동일한 문자를 가지고 있는 
     // 열거객체의 번지를 weekDay로 리턴시켜준다
    
  • values() 메소드 : 모든 열거 객체들을 배열로 리턴
  • EX)
     Week[] days = Week.values();
     // values()는 배열을 생성하고 생성된 배열의 번지를 리턴해 days에 대입
     for(Week day : days){ 
         System.out println(day);
     }
        
    


Share Tweet +1