본문 바로가기
학습/JAVA

5. 열거 타입

by Elfen Lied 2022. 10. 5.
반응형

- 열거 타입

  • 열거타입(enumeration type) : 한정된 값만 갖는 데이터 타입
  • 열거상수(enumeration constant) : 열거 타입에 저장되는 상수 

 

- 열거 타입 선언

  • 열거 타입의 이름
  1.  첫 문자 대문자 나머지 소문자
  2. 여러 단어로 구성된 이름 카멜케이스
  3. 열거 타입 이름과 소스 파일명 이름은 동일해야함

 

 

- 열거 상수의 선언

 

  • 열거 상수는 모두 대문자로 작성

public enum Week { MONDAY, TUESDAY, WEDNESDAY, THURSDAY ... }

 

  • 여러단어로 구성될 경우 밑줄(_)로 구분

public enum LoginResult { LOGIN_SUCCESS, LOGIN_FAILED}

 

 

 

- Calendar 클래스 사용

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

		// new 연산자로 객체생성 불가 - 만들어진거 가져다 써야함
		Calendar now = Calendar.getInstance();
        
		int year = now.get(Calendar.YEAR);
		int month = now.get(Calendar.MONTH) + 1;
        
		System.out.println(year + "년");
		System.out.println(month + "월");
	}
}

값
2022년
10월

 

 

- 열거 객체의 메소드

  • String name() - 열거객체의 문자열 리턴
  • int ordinal() - 열거객체의 순번 리턴
  • int compareTo(E o) - 열거객체의 순번의 차 리턴
  • T valueOf(String name) - 전달된 문자열의 열거 객체 리턴
  • T[] values() - 모든 열거객체를 배열로 리턴

1. String name()

public static void main(String[] args) {
		Week week = Week.SUNDAY;
		
		// name() 이름
		String weekName = week.name();
		System.out.println(weekName); // name메소드 사용
		System.out.println(week); // 그냥 출력
	}
}

 

2. int ordinal()

public static void main(String[] args) {
		Week week = Week.SUNDAY;

		// ordinal() 순번
		int weekOrdi = week.ordinal();
		System.out.println(weekOrdi);// SUNDAY의 순번
		System.out.println(Week.FRIDAY.ordinal()); // FRIDAY의 순번 5
	}
}

 

3. int compareTo()

매개값이 기준

public static void main(String[] args) {
		
		// compareTo() 열거 객체 비교
		Week day1 = Week.MONDAY; // 1
		Week day2 = Week.WEDNESDAY; // 3
        
		// 상대적 위치 (인수 기준: day1은 day2 기준 어디에 위치하는가)
		int pos1 = day1.compareTo(day2); // day1 순번(1) - day2 순번(3) = -2
		int pos2 = day2.compareTo(day1); // day1 순번(3) - day2 순번(1) = 2
        
		System.out.println(pos1); // -2
		System.out.println(pos2); // 2
	}
}

 

4. values()

public class EnumMethodExample {
	public static void main(String[] args) {
    
		Week[] weeks = Week.values();
		System.out.println(weeks.length); 
		System.out.println(Arrays.toString(weeks));

	}
}

값
7
[SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY]

 

5. valueOf()

public class EnumMethodExample2 {
	public static void main(String[] args) {
		
		Week day1 = Week.valueOf("SUNDAY");
		System.out.println(day1);
		
		// 대소문자 구분, 없으면 예외발생
//		Week day2 = Week.valueOf("Sunday");
//		System.out.println(day2);
	}
}

값
SUNDAY

예외 ( java.lang.IllegalArgumentException )

반응형

'학습 > JAVA' 카테고리의 다른 글

6. 클래스(메소드, 인스턴스 멤버와 this)  (0) 2022.10.06
6. 클래스(생성자)  (0) 2022.10.05
5. 참조 타입  (0) 2022.10.04
4. 반복문(for문, while문, do-while문  (0) 2022.09.30
4. 조건문(if문, switch문)  (0) 2022.09.29

댓글