인스턴스 필드와 정적 필드는 언제든지 값을 변경할 수 있다. 그러나 경우에 따라서는 값을 변경하는 것을 막고 읽기만 허용해야 할 때가 있다. 이때 final 필드와 상수를 선언해서 사용한다.
final 필드 선언
final은 최종적이라는 뜻을 가지고 있다. final 필드는 초기값이 저장되면 이것이 최종적인 값이 되어서 프로그램 실행 도중에 수정할 수 없게 된다. final 필드는 다음과 같이 선언한다.
final 타입 필드 [=초기값];
final 필드에 초기값을 줄 수 있는 방법은 다음 두 가지 밖에 없다.
- 필드 선언 시에 초기값 대입
- 생성자에서 초기값 대입
고정된 값이라면 필드 선언 시에 주는 것이 가장 간단하다. 하지만 복잡한 초기화 코드가 필요하거나 객체 생성 시에 외부에서 전달된 값으로 초기화한다면 생성자에서 해야 한다. 이 두 방법을 사용하지 않고 final 필드를 그대로 남겨 두면 컴파일 에러가 발생한다.
상수 선언
우리 주변에는 불변의 값이 있다. 불변의 값은 수학에서 사용하는 원주율이나 지구의 무게 및 둘레 등이 해당된다. 이런 불변의 값을 저장하는 필드를 자바에서는 상수(Constant)라고 부른다. 상수는 객체마다 저장할 필요가 없고, 여러 개의 값을 가져도 안되기 때문에 static 이면서 final인 특성을 가져야 한다.
static final 타입 상수 [= 초기값];
초기값은 선언 시에 주는 것이 일반적이지만, 복잡한 초기화가 필요한 경우에는 정적 블록에서 초기화 할 수도 있다.
static final 타입 상수;
static {
상수 = 초기값;
}
상수 이름은 모두 대문자로 작성하고, 서로 다른 단어가 혼합되었다면 언더바(_)로 단어들을 연결한다. 또한 상수는 정적 필드이므로 클래스로 접근해서 읽을 수 있다.
static final PI = 3.14159;
'Language > JAVA' 카테고리의 다른 글
| [JAVA] import 문 (0) | 2024.09.04 |
|---|---|
| [JAVA] 패키지 (0) | 2024.09.04 |
| [JAVA] 인스턴스 멤버와 정적 멤버 (0) | 2024.09.04 |
| [JAVA] 메서드 (0) | 2024.09.04 |
| [JAVA] 생성자 (2) | 2024.09.04 |