본문 바로가기
Java & Kotlin/Java

11. 열거형 (Enum)

by heekng 2021. 1. 19.
반응형
 

열거형이란, 코드를 작성할 때 한정된 값들만을 가지고 이용되는 변수를 관리하는 데이터 타입입니다.


1. 열거형 생성

열거형을 생성할 때에는 가장 먼저 class를 만들듯이 Enum타입을 생성합니다.

처음 Enum을 생성하면 다음과 같은 기본 코드를 볼 수 있습니다.

1

2

3

public enum Season {

 

}

enum은 public을 붙여서 어디서든 사용할 수 있음을 알립니다.

1

2

3

public enum Season {

SPRING, SUMMER, AUTUMN, WINTER

}

위와 같이 enum 안에서 열거 상수 SPRING, SUMMER, AUTUMN, WINTER을 나열하면 열거형 Season을 생성합니다.


2. 열거형 사용하기

열거형을 생성했다면 동일한 프로젝트 안에서 생성한 열거형을 불러옵니다.

1

2

3

4

5

6

7

8

9

10

11

public class blog {

public static void main(String[] args) {

Season s1; //열거형 선언방법 1

s1 = Season.AUTUMN;

 

Season s2 = null; //열거형 선언방법 2

s2 = Season.SPRING;

 

Season s3 = Season.SUMMER; //열거형 선언방법 3

}

}

위 코드처럼 Season(계절)을 담을 s1, s2, s3를 선언할 수 있으며, 각각의 참조변수에 [참조변수명] = [Enum명].[열거상수]; 의 형태로 각각의 값을 넣어줄 수 있습니다.

s1, s2, s3를 모두 출력하면

위와 같이 출력됨을 확인할 수 있습니다.


3. 열거형을 사용하는 이유

저는 배열에 문자열들을 모두 저장하고 불러오는 것과 같지 않을까? 라는 의문을 가졌습니다.

열거형은 정해놓은 상수값을 모아놓은 집합, 예약어입니다.

(1) Enum을 통하여 상수 배열을 선언하는 과정이 상대적으로 간단하고, 열거상수를 불러오는 과정이 간단합니다.

예를 들어, 위와 같이 이클립스에서 enum으로 선언한 Seaon. 만을 입력하면 해당하는 열거상수들을 쉽게 확인, 불러올 수 있습니다.

(2) 열거상수에 추가적인 설명, 문구를 할당할 수 있습니다.

1

2

3

4

5

6

7

8

9

10

11

12

13

public enum Season {

SPRING("봄"), SUMMER("여름"), AUTUMN("가을"), WINTER("겨울");

private String korean;

private Season() { //기본생성자

 

}

private Season(String korean) {

this.korean = korean;

}

public String getKorean() {

return korean;

}

}

위와 같이 각각의 열거상수 뒤에 추가속성 ("문자열")을 입력하고 private 생성자를 만들어주며, getKorean()이라는 메소드를 생성해 주었습니다.

1

2

3

4

5

6

7

8

public class blog {

public static void main(String[] args) {

Season a = Season.SPRING;

String b =Season.SPRING.getKorean();

System.out.println(a);

System.out.println(b);

}

}

enum을 생성하며 만든 getKorean(); 메소드를 이용하면 각각의 열거상수에 작성했던 추가 속성을 문자열 형태로 출력할 수 있습니다.

추가속성의 경우 여러개의 문자열을 설정할 수 있으며 이 때에 열거형 생성자에도 매개변수를 추가속성의 개수만큼 늘려주어야 합니다.


4. 열거형의 메소드

열거형 자체의 메소드는 다음과 같습니다.

[참조변수].name()

열거 객체의 문자열을 리턴 (String)

[참조변수].ordinal()

열거 객체의 순번을 리턴 (int)

[참조변수1].compareTo([참조변수2])

열거 객체를 서로 비교하여 리턴 (int)

[열거형].valueOf([문자열])

문자열과 동일한 값을 가진 열거객체를 리턴

[열거형].value()

해당 열거형의 열거상수를 배열로 리턴

(1) .name()

1

2

3

4

5

6

7

public class blog {

public static void main(String[] args) {

Season season = Season.WINTER;

String str = season.name();

System.out.println(str);

}

}

.name() 메소드는 위와 같이 열거상수를 문자열로 받아야 하는 상황에 이용합니다.

(2) .ordinal()

1

2

3

4

5

6

7

public class blog {

public static void main(String[] args) {

Season season = Season.WINTER;

int num = season.ordinal();

System.out.println(num);

}

}

.ordinal() 메소드는 해당 열거형의 열거상수들을 0부터 시작하는 번호를 매겨 몇 번째 열거상수인지를 알려줍니다.

(3) .compareTo()

1

2

3

4

5

6

7

8

public class blog {

public static void main(String[] args) {

Season season1 = Season.WINTER;

Season season2 = Season.SUMMER;

int num = season1.compareTo(season2);

System.out.println(num);

}

}

.compareTo() 메소드는 두개의 열거상수의 번호를 비교하여 차이를 int형으로 나타냅니다.

(4) .valueOf()

1

2

3

4

5

6

7

public class blog {

public static void main(String[] args) {

Season season = Season.valueOf("SUMMER");

String str = season.name();

System.out.println(str);

}

}

.valueOf() 메소드는 참조변수의 문자열을 열거형에서 찾아 할당합니다.

(5) .value()

1

2

3

4

5

6

7

public class blog {

public static void main(String[] args) {

for (Season str : Season.values()) {

System.out.println(str);

}

}

}

.value() 메소드는 해당 열거형을 배열형태로 리턴합니다.

반응형

'Java & Kotlin > Java' 카테고리의 다른 글

14. 접근제한자(public, protected, private, default), getter, setter  (0) 2021.01.19
13. final  (0) 2021.01.19
12. Static  (0) 2021.01.19
10. 클래스 (Class, 생성자)_1  (0) 2021.01.19
9. 메서드, 함수 (Function, 오버로딩)  (0) 2021.01.19
8. 배열 (Array)  (0) 2021.01.19