[JAVA] 자바의 Enum, 열거형 이란
01. Enum 이란?
: "Enumeration"의 약자로, Enumeration은 "열거, 목록, 일람표"라는 뜻으로 요소, 멤버라 불리는 명명된 값의 집합을 이루는 자료형이다.
: 열거자 이름들은 일반적으로 해당 언어의 상수 역할을 하는 식별자이이며, 일부 열거자 자료형은 언어에 기본 소속되어 있을 수 있다.
: Enum 은 상수 그룹 (Final 변수처럼, 바꿀 수없는 변수)를 나타내는 특수한 Class 이다.
: 다만 interface 대신 Enum 키워드를 사용하고, 대문자를 사용하고, 쉼표로 구분해야 한다.
<학원에서 얘기하는 Enum>
- 데이터 중에는 몇가지로 한정된 값 나열
- 열거 상수 (enumeration constant)
- Stati Final
- 열거타입. 열거상수
- 확장자는 java 로 외형적인 것은 class 와 동일하다. 다만 키워드는 enum
- 대문자로 구성해야 함
- Enum 객체가 컴파일 될 때 Enum 을 상속하게 되어 있어서, Enum 의 메서드를 활용 할 수 있다.
< 요일 Enum 생성하기 >
package enums;
public enum Week {
// 확장자는 .java 이다. 외형적인것은 클래스와 동일하다.
SUN,MON,TUE,WEN,THU,FRI,SAT;
Week(){}
}
<요일 Enum 활용하기>
package enums;
public class EnumTest01 {
public static void main(String[] args) {
System.out.println(Math.PI); //3.141592653589793
System.out.println(Week.MON); //MON
System.out.println(Week.MON.ordinal()); //1 index
System.out.println(Week.MON.name()); //MON //문자열로 제공한다.
System.out.println(Week.MON.toString()); //MON
}
}
<요일 Enum을 통한 오늘 요일 출력하기>
package enums;
public enum Week {
// 확장자는 .java 이다. 외형적인것은 클래스와 동일하다.
SUN("일요일"),
MON("월요일"),
TUE("화요일"),
WEN("수요일"),
THU("목요일"),
FRI("금요일"),
SAT("토요일");
String KoName; // KoName 을 필드로 사용
Week(String koName) { // 생성자 만들기
this.KoName=koName;
}
}
package enums;
import java.util.Calendar;
public class EnumTest02 {
public static void main(String[] args) {
// 열거 상수만 저장 가능
//Week week1=Week.SUN;
//Week week2=Week.SUN;
//System.out.println(week1 == week2); //true
// Calendar cal=new Calendar(); // 날짜 표현
Calendar cal=Calendar.getInstance();
//System.out.println(cal.get(Calendar.YEAR)); // 0->1 // 1->2023(연도)
// 연도를 표현하는 cal.get이기에 그 안에 Calendar 을 넣음로 보기 쉽게함(상수 표현식)
// System.out.println(cal.get(Calendar.DAY_OF_WEEK)); //6 --- SUN: 0, MON:1 --> FRI : 6
Week today=null;
int n= cal.get(Calendar.DAY_OF_WEEK); // 요일을 숫자로 가지고 옵니다.
switch(n) {
case 1:// 일요일
today=Week.SUN; break;
case 2:// 월요일
today=Week.MON; break;
case 3:// 화요일
today=Week.TUE; break;
case 4:// 수요일
today=Week.WEN; break;
case 5:// 목요일
today=Week.THU; break;
case 6:// 금요일
today=Week.FRI; break;
case 7:// 토요일
today=Week.SAT; break;
}
System.out.println("오늘은 "+ today + "day 입니다. "); // 영어로
System.out.println("오늘은 "+ today.name()+ " 입니다. "); //영어로
System.out.println("오늘은 "+ today.KoName + " 입니다. "); //한국어로 출력
System.out.println("오늘은 "+ today.ordinal() + " 입니다. "); //숫자로
System.out.println(cal.get(Calendar.MONTH)); //1
}
< 달력 만들기 >
package enums;
import java.util.Calendar;
public class Ex {
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, 1); // 오늘 날짜 셋팅
System.out.println("요일 정보 : " + cal.get(Calendar.DAY_OF_WEEK)); // 1부터
System.out.println("오늘 날짜 : " + cal.get(Calendar.DAY_OF_MONTH)); // 1부터
//System.out.println("오늘 날짜 : " + cal.get(Calendar.DATE)); // 1부터
System.out.println("이번달 마지막 날짜 : " + cal.getActualMaximum(Calendar.DAY_OF_MONTH)); // 28
Week[] w= Week.values();
for(int i=0; i< w.length ; i++) {
System.out.printf("%3s ", w[i]);
}
System.out.println();
// 2월 1일의 요일 확인
for(int i= 1; i< cal.get(Calendar.DAY_OF_WEEK); i++) {
System.out.print(" ");
}
int lastDay=cal.getActualMaximum(Calendar.DAY_OF_MONTH);
for(int i=1; i<=lastDay ; i++) {
cal.set(Calendar.DAY_OF_WEEK,i);
int n=cal.get(Calendar.DAY_OF_WEEK);
System.out.printf("%3d ", i); //1~28까지 나옴
if(n==4)System.out.println();
}
}
** Calendr 클래스
(1) 개념: 날짜와 시간을 객체모델링화한 클래스, 시스템으로부터 시간 정보를 얻기에 getlnstance() 클래스 메서드 이용
- ex) Calendar.getlnstance();
(2) 종류(상수)
- YEAR : 년도
- MONTH : 월
- DATE : 해당 월의 날짜
- WEEK_OF_YEAR : 해당 년도의 몇 째주
- WEEK_OF_MONTH : 해당 월의 몇 째주
- DAY_OF_MONTH : DATE와 동일
- DAY_OF_YEAR : 해당 년도의 날짜
- DAY_OF_WEEK : 월, 화, 수...
- HOUR : 시간(12시간제)
- HOUR_OF_DAY : 시간(24시간제)
- MINUTE : 분
- SECOND : 초
이외 정보 아래 블로그 참고
https://whitewing4139.tistory.com/248
[Java Basic] 40 - 열거형(enum) 개요와 사용법
Java에서 날짜와 시간을 다루는 클래스 중 Calendar라는 클래스가 java.util 패키지 내에 존재한다. Calendar 클래스는 특정 날짜의 연도, 월, 일, 시, 분, 초 등을 필드값으로 지정하고 있다. Calendar는 get
whitewing4139.tistory.com