Enum

노건우·2023년 9월 27일
0

Spring

목록 보기
9/22

enum 타입

enum 타입이란?

  • Enumeration
  • 연관된 상수들을 하나의 타입으로 지정할 수 있도록 하는 클래스
  • 데이터 중에서는 요일(일,월,화,수,목,금,토), 계절(봄,여름,가을,겨울)등과 같이 몇 가지 한정된 값을 갖는 경우가 흔히 있다.이러한 데이터를 열거 타입에 들어갈 수 있는 열거
    상수라고 한다.

enum의 장점

  • 코드가 단순해지며 가독성이 좋아진다.
  • 인스턴스 생성과 상속을 방지 하여서 상수값의 안정성이 보장됨
  • 상수 자료형을 정의함으로써 해당 자료형 이외의 상수값은 저장되지 못하게 함
  • enum이라는 예약어를 사용함으로써 열거 의도를 분명히 함

Enum과 메모리 구조

  • java에서 열거 상수는 상수 각각을 내부적으로 public static final필드 이면서 객체로 제공되도록 한다.
  • static이 붙어있기 때문에 각각의 상수는 클래스 변수로 클래스로더가 로드 시점에 jvm method영역에 해당 클래스 변수들을 항상 상주시켜 프로그램이 종료되기 전에
    가져다 쓸 수 있는 주소 공간을 확보한다.

예시 파일

package com.codingbox.item.test.enums;

public enum Week {
	MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY;
	
	//enum타입은 일반 메서드를 가질 수 있다.
	public void dayInfo() {
		System.out.println("dayInfo enum");
	}
}
package com.codingbox.item.test.enums;

public class Main01 {

	public static void main(String[] args) {
		Week today = Week.MONDAY;
		System.out.println(today);
		
		Week.MONDAY.dayInfo();
		Week.FRIDAY.dayInfo();
	}
}

그에 따른 결과

FRIDAY로 설정한 경우

객체 모두를 가져오는 경우

package com.codingbox.item.test.enums;

public enum Season {
	SPRING, SUMMER, FALL, WINTER;
}
package com.codingbox.item.test.enums;

public class Main02 {

	public static void main(String[] args) {
		Season season = Season.SPRING;
		
		//name() : 열거 객체의 문자열 리턴
		String name = season.name();
		System.out.println(name);
		System.out.println("-----------------------------------------");
		
		//ordinal() : 열거 객체가 몇 번째인지를 리턴
		int ordinal = season.ordinal();
		System.out.println(ordinal);
		System.out.println("-----------------------------------------");
		
		//values():열거 타입의 모든 열거 객체들을 배열로 만들어 리턴
		Season[] season1= Season.values();
		for(Season s : season1) {
			System.out.println(s);
		}
	}
}

profile
초보 개발자 이야기

0개의 댓글

관련 채용 정보