반응형
개념
이넘enum은 프로그램이 실행되는 동안 고정되어 있는 값을 정의하기 위해 사용하는 클래스
이를 다른말로 상수Constant를 정의한다 라고 합니다.
생겨난 이유
프로그래밍에서는 어떤상황에서든 반드시 필요한 값이 종종 필요할때가 있습니다.
이 값이 변해서는 안되지요. 이런경우, 보통 상수를 정의해서 사용합니다.
역사
이는 C언어부터 사용되어온 기술중 하나인 #define 전처리기와 const 키워드 입니다.
C 코드 예제
#include <stdio.h>
#define MALE 1
int main()
{
const int FEMALE = 2;
int input = 2;
if(input==MALE){
printf("I am male");
}else{
printf("I am Female");
}
return 0;
}
결과
I am Female
위 코드는 input변수에 3을 넣더라도 "I am Female"이 출력됩니다. 추가적으로 if문등을 사용해서 체크하는 수밖에 없었지요.
그대로 자바로 넘어오면서 final이라는 개념이 생겨나게 됩니다.
final은 엄밀하게 말하면 상수와 완벽하게 똑같지는 않지만, 이를 포함하는 개념이고. 이를 상수처럼 사용하게 되었습니다.
static final 키워드가 자바에서 사용하는 키워드 입니다.
자바 코드 예제
public class Main {
public static final String MALE = "MALE";
public static final String FEMALE = "FEMALE";
public static void main(String[] args) {
String gender;
gender = Main.MALE;
gender = "male"; //실수
if(gender.equals(Main.MALE)){
System.out.println("I am male");
}else{
System.out.println("I am female");
}
}
}
결과
I am female
여전히 똑같은 문제가 발생합니다. 위와 같은 예제에서 "male"가 들어가도 String type이므로 프로그래밍상에서는 문제가 되지 않지만 실제 프로그램은 원하는대로 되지 않는 경우가 발생합니다.
그래서 생겨난 기능이 enum class입니다.
이를 열거형이라고 부르며, 상수를 잘못할당하는것을 피할수 있습니다.
enum 자바 예제
public class Main {
public static void main(String[] args) {
Gender gender;
gender = Gender.MALE;
gender = "male"; //실수+ 에러가 남
if(gender==Gender.MALE){
System.out.println("I am male");
}else{
System.out.println("I am female");
}
}
}
enum Gender {MALE, FEMALE;}
반응형
'old > Programming' 카테고리의 다른 글
해쉬 알고리즘hash algorithm (0) | 2021.11.05 |
---|---|
파이썬의 자료구조-딕션어리Dictionary (0) | 2021.11.04 |
Java로 구현하는 피보나치 수열과 피보나치 숫자 판별 방법 (0) | 2021.10.28 |
다이나믹 프로그래밍 (0) | 2021.10.28 |
[파이썬 코드]이미지로 좌표 찾기 (0) | 2021.10.27 |