seowon98 2020. 3. 22. 15:09

Enum: 상수의 그룹 -> 그룹 속 상수는 타입이 정해질 필요 없음

 

상수란?

프로그램이 실행되는 동안(선언과 값설정을 동시에 했다면) 값을 변경할수 없는 것을 말한다

쉽게 말해 다시 재정의가 불가능 한 변환되지 않는 값을 말한다

출처: https://codingisgame.tistory.com/11 [Coding or Gaming]

 

- 선언 

 

enum Color {

RED, GREEN, BLUE

}

 

--> 내부적으로..

class Color {

public static final Color RED = new Color();

public static final Color BLUE = new Color();

public static final Color GREEN = new Color();

}*/

 

모든 enum 상수들은 객체 타입의 enum이다. (new Color())

 

- 호출

 

Color color = Color.RED;

 

-메서드

values() 모든 상수 반환
ordinal() 상수 인덱스 반환
valueOf() 상수 문자 값 반환

https://woowabros.github.io/tools/2017/07/10/java-enum-uses.html

 

Java Enum 활용기 - 우아한형제들 기술 블로그

안녕하세요? 우아한 형제들에서 결제/정산 시스템을 개발하고 있는 이동욱입니다.이번 사내 블로그 포스팅 주제로 저는 Java Enum 활용 경험을 선택하였습니다. 이전에 개인 블로그에 Enum에 관해 알게 된 점들을 정리했음에도 선택한 이유는 제가 Enum을 통해 많은 도움을 얻었기...

woowabros.github.io

개발을 진행할때 Enum을 통해 얻는 기본적인 장점)

  • 문자열과 비교해, IDE의 적극적인 지원을 받을 수 있습니다.
    • 자동완성, 오타검증, 텍스트 리팩토링 등등
  • 허용 가능한 값들을 제한할 수 있습니다.
  • 리팩토링시 변경 범위가 최소화 됩니다.
    • 내용의 추가가 필요하더라도, Enum 코드외에 수정할 필요가 없습니다.

이 장점들은 모든 언어들의 Enum에서 얻을 수 있는 공통된 장점입니다.
하지만 Java의 Enum은 이보다 더 많은 장점을 갖고 있습니다.
C/C++의 경우 Enum이 결국 int값이지만, Java의 Enum은 완전한 기능을 갖춘 클래스이기 때문입니다.

 

public class foreachEx {
	enum Week { 월, 화, 수, 목, 금, 토, 일 }
	
	public static void main(String[] args) {
		int [] n = { 1,2,3,4,5 };
		String names[] = { "사과", "배", "바나나", "체리", "딸기", "포도" } ;

		int sum = 0;
		// 아래 for-each에서 k는 n[0], n[1], ..., n[4]로 반복
		for (int k : n) {
			System.out.print(k + " "); // 반복되는 k 값 출력
			sum += k;
		}
		System.out.println("합은" + sum);
		
		// 아래 for-each에서 s는 names[0], names[1], ..., names[5]로 반복
		for (String s : names) 
			System.out.print(s + " ");
		System.out.println();

		// 아래 for-each에서 day는 월, 화, 수, 목, 금, 토, 일 값으로 반복 
		for (Week day : Week.values()) 
			System.out.print(day + "요일 ");
		System.out.println();
	}
}