본문 바로가기
Language/Java

enum 타입(열거형 데이터 타입)

by 태윤2 2020. 6. 24.

enum 타입

 

한정된 상수로 구성되는 데이터 타입

클래스와 유사한 형태로 구성(정의)

별도의 값을 지정하지 않고 상수 자체를 그대로 사용

 

< 기본 정의 문법 >

enum enum타입명 {

         상수명1, 상수명2, ... 상수 명n;

 

< 기본 사용 문법 >

enum 타입명. 상수명

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
enum Grade { // enum 타입 정의 => enum 타입명을 Grade 로 지정(클래스와 선언부 거의 동일)
    SALES, // Ordinal =0
    PART_TIME_JOB, // Ordinal =1
    NOMAL // Ordinal =2
  자동으로 순서번호 (Ordinal) 가 기록되며 0부터 부여됨
  compareTo() 로 Ordinal 비교
}
 
// enum 타입 변수를 선언하여 상수값 할당 가능
 
Grade grade = Grade.SALES;
 
System.out.println(grade instanceof Enum); // enum 타입은 Enum 클래스를 상속받음
System.out.println(grade instanceof Object); // enum 타입은 Object 클래스를 상속받음
 
if (grade == Grade.NOMAL) {
    System.out.println("일반 근로자");
else if(grade == Grade.PART_TIME_JOB) {
    System.out.println("시간제 근로자");
else if (grade == Grade.SALES) {
    System.out.println("영업직 근로자");
}
 
// Grade 타입이 아닌 다른  enum 타입과의 비교 자체가 불가능하다
 
// switch ~ case 문에 enum 타입 ㅏ용 가능
// switch 조건식에 사용 가능한 타입 : int타입 이하의 정수, 문자열, enum
 
switch(grade) {
case NOMAL :
    System.out.println("일반 근로자!!!");
    break;
case SALES : 
    System.out.println("영업직 근로자!!!");
    break;
case PART_TIME_JOB : 
    System.out.println("시간제 근로자!!!");
default : 
    System.out.println("근로자아님!!");
}
 
// compareTo() 메서드 : ordinal 차이값을 리턴
System.out.println(grade.compareTo(Grade.NOMAL)); == -2
cs

 

 

'Language > Java' 카테고리의 다른 글

Stack(스택) vs Queue(큐)  (0) 2020.06.25
Map 인터페이스 - Collection 프레임워크  (0) 2020.06.25
BigInteger & BigDecimal  (0) 2020.06.24
Random 클래스  (0) 2020.06.24
Math 클래스  (0) 2020.06.23