2024.04.18

Java 열거 (enum) 타입 - Enumeraion Type

  • Java enum은 열거형 데이터 타입으로, 상수들의 집합을 정의하는 데 사용된다.
    즉, 하나의 값이 고정된 상수 목록 중 하나일 때 유용하게 사용된다.
    enum은 클래스처럼 동작하지만, 기본적으로 특정 값들의 제한된 목록을 제공.

Enum의 특징

  • 고정된 상수값 집합: 특정 값들만 가질 수 있다. ex - 요일이나 계절 등을 표현할 때 사용.
  • 타입 안전성: enum을 사용하면 정해진 상수만 사용할 수 있어 코드의 안정성을 높인다.
  • 메서드와 필드 포함 가능: enum은 내부에 메서드나 필드를 정의할 수 있어서 단순 상수 이상의 기능을 제공.
  • 기본적으로 java.lang.Enum을 상속받음: 모든 enum은 Enum 클래스를 자동으로 상속.

enum을 이용한 요일 출력

package ch05ref;

import java.util.Calendar; // Calendar는 java.util 패키지에 있으므로 import 필요

public class WeekExample {
	public static void main(String[] args) {

		// Week enum 안에 요일 변수들을 사용해야 한다.
		System.out.println(Week.MONDAY);

		// 오늘의 요일을 구하자.
		// Week 열거 타입 변수 선언
		Week today = null; // Week 타입 변수 today 선언
		
		// 배열로 설정할 경우 index 0 은 사용하지 않기 때문에 첫번째 배열은 비운다.
		String[] weekName = {"","일요일","월요일","화요일","수요일","목요일","금요일","토요일"}; // 0, 1, 2, 3, 4, 5, 6, 7

		// 오늘 날짜와 시간 정보 객체 만들기 - java.util.Date & java.util.Calendar
		// Calendar 얻기
		Calendar cal = Calendar.getInstance(); // 컴퓨터 날짜 및 시간 정보를 가진 Calendar 객체를 얻고 번지를 cal 변수에 대입. Calendar 얻기
		System.out.println("요일 정보의 위치 = " + Calendar.DAY_OF_WEEK);

		// 요일 정보를 꺼내보자.(1~7)
		int week = cal.get(Calendar.DAY_OF_WEEK); // 일(1) ~ 토(7)까지의 숫자를 얻고 week 변수에 대입
		// 1 - 일, ... 5 - 목
		System.out.println("요일 정보 : " + week);

		// today settinf 하기
		// 숫자를 열거 상수로 변환해서 변수에 대입
		switch (week) {
		case 1:
			today = Week.SUNDAY;
			break;
		case 2:
			today = Week.MONDAY;
			break;
		case 3:
			today = Week.TUESDAY;
			break;
		case 4:
			today = Week.WEDNSDAY;
			break;
		case 5:
			today = Week.THURSDAY;
			break;
		case 6:
			today = Week.FRIDAY;
			break;
		case 7:
			today = Week.SATURDAY;
			break;

		} // end of switch
		
		// 처리된 요일 출력
		System.out.println(today);
		
		if (today == Week.THURSDAY) System.out.println("오늘은 목요일 입니다.");
		
		// 표기할 요일 출력
		System.out.println(weekName[week]);

		// 열거 타입 변수를 사용
		if (today == Week.SUNDAY) {
			System.out.println("일요일에는 축구를 합니다.");
		} else {
			System.out.println("열심히 자바를 공부합니다.");
		} // end of if
	} // end of main()
} // end of class

태그:

카테고리: ,

업데이트: