Final
변수에 final 키워드가 붙으면 값을 변경할 수 없다.
final 을 지역 변수에 선언 시 최초 한번만 할당할 수 있다.
매개변수에 final 선언 시 메서드 내부에서 매개변수에 값을 변경할 수 없다.
//final 필드 - 생성자 초기화
public class ConstructInit {
final int value;
public ConstructInit(int value) {
this.value = value;
} }
final을 필드에서 사용할 경우 필드는 생성자를 통해서 한번만 초기화 가능
//final 필드 - 필드 초기화
public class FieldInit {
static final int CONST_VALUE = 10;
final int value = 10;
}
필드에서 초기화하면 이미 값이 설정되어 생성자를 통해서 초기화 불가능
final 필드를 필드에서 초기화하는 경우 모든 인스턴스가 같은 값을 가져 메모리를 낭비한다.
→ static 을 사용해 static 영역에 값을 하나만 두는게 효율적이다.
상수: static final
static 영역에 존재 + final 키워드로 초기화 값이 변하지 않도록
⇒ 중복과 메모리 비효율 문제 해결
final 변수와 참조
참조형 변수에 final이 붙으면 참조 값 변경 불가
참조 대상의 객체 내부 값은 변경 가능
참고) 김영한 - 실전 자바
'BACK > JAVA' 카테고리의 다른 글
[JAVA] 다형성(다형적 참조, 메서드 오버라이딩) (1) | 2024.01.30 |
---|---|
[JAVA] 상속과 오버라이딩, super (0) | 2024.01.30 |
[JAVA] 접근 제어자의 종류 (0) | 2024.01.30 |
[JAVA] 생성자, this (1) | 2024.01.30 |
[JAVA] 객체 지향 프로그래밍이란? (0) | 2024.01.30 |