티스토리 뷰
final 필드
필드값은 프로그램 실행 시, 자주 수정되곤 했다.
하지만, final필드는 초기값이 저장되면 프로그램 실행 도중 수정이 불가능하다.
즉, 변화되지 않을 필드를 보통 final 필드로 선언한다.
final 필드의 초기화 방법은 두가지이다.
1. 필드 선언시, 초기화
final String nation = "Korea";
final int Value = 0;
2. 생성자에서 초기화
생성자에서는 final 필드의 초기화를 마쳐야 한다.
만약 초기화되지 않는 final 필드를 그대로 남겨두면 컴파일 에러가 발생한다.
final String nation;
//생성자
public Person (String nation) {
this.nation = nation;
}
상수 (static final)
일상생활에서 우리는 불변 값을 상수라고 부른다.
이 값들을 저장하는 필드를 우리는 앞으로 상수라고 부를 것이다.
그렇다면, final 필드도 상수라고 부를 수 있지 않을까?
final 필드는 상수라고 부를 수 없다.
왜냐하면 final 필드는 객체마다 저장되며, 객체마다 다른 값을 가질 수 있기 때문이다.
하지만, 상수는 전역변수(static)이기 때문에 객체마다 하나의 값만을 가지며 그 값은 계속 변화하지 않는다.
그래서 보통 상수는 pi값, 지구 무게 및 둘레 등 절대적인 값을 저장하는 데 쓰인다.
상수는 보통 모두 대문자로 작성되며, 서로 다른 단어가 혼합된 경우 언더바로 단어들을 연결하여 준다.
static final double PI = 3.141592;
상수는 보통 위 코드처럼 선언 시에 초기화하지만, 복잡한 초기화의 경우 정적 블록에서 초기화를 진행하다.
정적 블록은 다음과 같이 사용한다.
static final 타입 상수;
static {
상수 = 초기값;
}
정적 블록 사용 예시 코드는 다음과 같다.
static final double EARTH_RADIUS = 6400;
static final double EARTH_SURFACE_AREA;
static{
EARTH_SURFACE_AREA = 4 * Math.PI * EARTH_RADIUS * EARTH_RADIUS;
}
'JAVA' 카테고리의 다른 글
상속(Inheritance) (0) | 2019.09.17 |
---|---|
Getter와 Setter (0) | 2019.09.17 |
접근제한자(Access Modifier) (0) | 2019.09.16 |
싱글톤(Singleton) (0) | 2019.09.16 |
정적 멤버와 인스턴스 멤버 (0) | 2019.09.16 |