[Java] 자바 final 명령어 (public static final ...)
final 명령어
- 값을 바꿀 수 없게 조회하는 용도로만 사용하고 싶은 변수가 있다면, 읽기 전용으로 만들어야 한다.
- final 명령을 변수 선언 앞에 붙인다.
- 조회용임을 직관적으로 알 수 있도록 보통 대문자로 변수명을 시작한다.
그리고 단어와 단어 사이에는 '_' 문자를 사용하여 구분한다.
- 이렇게 조회용으로만 사용하는 변수를 상수 변수라고 부른다. 보통 "상수"라고 한다.
- 상수는 인스턴스 마다 고유의 값을 갖지 않고, 모든 인스턴스가 같은 값을 공유한다.
- 그래서 모든 인스턴스가 같은 값을 갖는 변수인 경우에는 보통 클래스 변수로 선언한다.
- 클래스 변수로 선언하면 인스턴스 마다 그 변수를 만들 필요가 없어 메모리가 절약된다.
- 상수 변수 중에서 공개하는 변수인 경우 public을 붙인다.
final 상수 예제
static class ArrayList {
public static final int DEFAULT_SIZE = 10;
public static final int GROW_SIZE = 1000;
Object[] list;
int length;
public ArrayList() {
list = new Object[10];
// DEFAULT_SIZE = 20; => 오류 발생
}
public ArrayList(int capacity) {
if (capacity < DEFAULT_SIZE || capacity < GROW_SIZE) {
list = new Object[DEFAULT_SIZE];
} else {
list = new Object[capacity];
}
}
}
public static final int DEFAULT_SIZE = 10;
- static을 안 써줘도 되지만 static을 써줘서 클래스 상수로 만들어
주면 인스턴스 마다 상수를 만들 필요가 없기 때문에 메모리가 절약
된다.
- 상수 변수 중에서 공개하는 상수인 경우 public을 붙인다.
'Programming > java' 카테고리의 다른 글
[Java] super 키워드의 사용 (0) | 2017.05.15 |
---|---|
[Java] 상속과 super() 메서드 (0) | 2017.05.15 |
[Java] 컬렉션 클래스 - List, Set, Map의 개념 정리 (3) | 2017.05.12 |
[Java] 랩퍼(wrapper) 클래스와 boxing / unboxing (2) | 2017.05.12 |
[Java] Object 클래스 - toString() 메서드의 재정의 예제 (0) | 2017.05.12 |