| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 디자인 패턴
- 자바스크립트
- Next.js
- SQL
- 백엔드
- 스프링
- jpa
- 서버
- jsp
- 오라클
- java
- 자바
- 정리
- 미니정리
- 스프링부트
- 알고리즘
- JavaScript
- 쿼리
- MySQL
- 프론트엔드
- 데이터베이스
- node.js
- web
- spring
- 프런트엔드
- oracle
- 프로그래머스
- 코드 테스트
- 코드테스트
- BACK-END
- Today
- Total
참치코더의 꿈 메모장
2021/08/27 Java - 열거형(enums) 본문
열거형(enums)
자바의 열거형은 C언어의 열거형보다 더 향상된 것으로 열거형이 갖는 값뿐만 아니라
타입까지 관리하기 때문에 보다 논리적인 오류를 줄일 수 있다.
C언어에서는 타입이 달라도 값이 같으면 조건식 결과가 참이면 참인데
자바의 타입에 안전한 열거형 에서는 실제 값이 같아도 타입이 다르면 조건식의 결과가
false가 된다.
값뿐만 아니라 타입까지 체크하기 때문에 안전하다.
열거형의 정의와 사용
enum 열거형 이름 {상수명1, 상수명2, . . . }
이 열거형에 정의된 상수를 사용하는 방법은 (열거형 이름.상수명) 이다.
열거형 상수간의 비교에는 == 를 사용할 수 있다.
그러나 <,>와 같은 비교연산자는 사용할 수 없고 compareTo( )는 사용이 가능하다.
* switch문의 조건식에도 열거형을 사용 할 수 있다.
모든 열거형의 조상 - java.lang.Enum
모든 열거형의 상수를 출력하는 방법
|
1
2
3
4
|
Ex[] eArr = Ex.values();
for(Ex e : eArr)
System.out.printf("%s=%d%n",e.name(), e.ordinal());
|
cs |
values( )는 열거형의 모든 상수를 배열에 담아 반환한다.
ordinal( )은 열거형 상수가 정의된 순서를 정수로 반환한다.
| Class<E> getDeclearingClass( ) | 열거형의 Class객체를 반환한다. |
| String name( ) | 열거형 상수의 이름을 문자열로 반환한다. |
| int ordinal( ) | 열거형 상수가 정의된 순서를 반환한다. |
| T valueOf(Class<T> enumType, String name) | 지정된 열거형에서 name과 일치하는 열거형 상수를 반환한다. |
열거형에 멤버 추가하기
열거형 상수의 값이 불연속적인 경우에는 상수의 이름 옆에 원하는 값을 괄호( )와 함께 적어주면 된다.
enum Shop {Toy(1), SNACK(5), ICECREAME(-1), COMPUTER(10)}
지정된 값을 저장할 수 있는 인스턴스 변수와 생성자를 새로 추가해 주어야 한다.
* 열거형 상수를 모두 정의한 다음에 다른 멤버들을 추가해야 한다.
|
1
2
3
4
5
6
7
|
enum Shop {
Toy(1), SNACK(5), ICECREAME(-1), COMPUTER(10);
private final int value;
Shop(int value) {this.value = value;}
public int getValue() {return value;}
}
|
cs |
또는 하나의 열거형 상수에 여러 값을 지정할 수도 있다.
그러나 그에 맞게 인스턴스 변수와 생성자 등을 새로 추가해주어야 한다.
'JAVA' 카테고리의 다른 글
| 메타 애너테이션(Annotation) - Java - 2021/08/31 (0) | 2021.08.31 |
|---|---|
| 표준 애너테이션(Annotation) - Java - 2021/08/30 (0) | 2021.08.30 |
| 2021/08/26 Java - Generics(지네릭스) (0) | 2021.08.26 |
| 2021-08-25 Java - 호텔 방 예약 프로그램 CRUD 과제 (Map 사용) (0) | 2021.08.25 |
| 2021/08/24 Java- 컬렉션 프레임워크 Set (0) | 2021.08.24 |