일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Kotlin
- 스프링
- jvm
- Real MySQL
- mysql
- GC
- Stack
- Collection
- list
- thread
- 이스티오
- OS
- 자바
- Stream
- K8s
- IntellJ
- gradle
- JPA
- Java
- 보조스트림
- redis
- 토비의 스프링
- 토비의 스프링 정리
- SpringBoot
- 쿠버네티스
- spring
- 자바 ORM 표준 JPA 프로그래밍
- 스트림
- 백준
- MSA
Archives
- Today
- Total
인생을 코딩하다.
[Java] 열거형(enum) 본문
728x90
반응형
열거형(enum)
- 관련된 상수들을 같이 묶어 놓은 것, Java는 타입에 안전한 열거형을 제공
class Card {
// 카드 무늬
static final int CLOVER = 0;
static final int HEART = 1;
static final int DIAMOND = 2;
static final int SPADE = 3;
// 카드 숫자
static final int TWO = 0;
static final int THREE = 1;
static final int FOUR = 2;
final int Kind;
final int num;
}
이렇게 일일이 하나씩 상수를 정의하다 보면 너무 많다.
그래서 간단히,
class Card{
// 0, 1, 2, 3
enum kind { CLOVER, HEART, DIAMOND, SPADE} // 열거형 Kind를 정의
enum Value { TWO, THREE, FOUR } // 열거형 Value를 정의
final Kind kind; // 타입이 int가 아닌 Kind임에 유의하자.
Final Value value;
}
무늬는 무늬끼리, 숫자는 숫자끼리 간단하게 정의할 수 있게 해놓는것이 열거형이다.
if(Card.CLOVER==Card.TWO)
두 값 모두 0이니깐 true일까?
true지만 사실 false이어야 의미상 맞다. Card.CLOVER은 무늬고 Card.TWO는 숫자다.
그래서 타입이 달라서 비교가 불가능하기 때문에 컴파일 에러가 뜬다. 자바는 값과 타입을 모두 체크한다.
열거형의 정의와 사용
- 열거형을 정의하는 방법
enum 열거형이름 {상수명1, 상수명2, ... } -> 이름을 주고 그 안에 상수들을 나열한다.
괄호 안에서 기본적으로 0부터 시작하는 상수를 나열한다
-열거형 타입의 변수를 선언하고 사용하는 방법
enum Direction { EAST, SOUTH, WEST, NORTH }
위의 상수 4가지 값만 dir에 들어갈 수 있다.
Class Unit {
int x, y; // 유닛의 위치
Direction dir; // 열거형인스턴스 변수를 선언
void init() {
dir = Direction.EAST; // 유닛의 방향을 EAST로 초기화
}
}
- 열거형 상수의 비교 ==와 compareTo() 사용 가능
728x90
반응형
'Java' 카테고리의 다른 글
[Java] Collection (0) | 2021.01.13 |
---|---|
[Java] Call by value의 메모리 관리 과정 (2) | 2021.01.09 |
[Java] Serializable과 NIO (0) | 2020.11.25 |
[Java] 보조 스트림 (0) | 2020.11.24 |
문자 단위 입출력 스트림 (0) | 2020.11.24 |
Comments