final
붙으면, 메서드 내부에서 매개변수의 값을 변경할 수 없음final int data = 10;
//data = 20; // 컴파일오류
static void method(final int parameter){
// parameter = 30; // 컴파일오류
}
static final
, final
공통점 : 둘다 값 설정시 변경이 불가능함
문제점 : final
키워드만 붙은 경우 인스턴스를 생성할 때마다 모든 인스턴스 값이 같은 상태로 생성됨
static
키워드를 붙어서, 하나만 존재하도록 만듬 -> 중복과 메모리 비효율 해결 public class FieldInit{
static final int CONST_VALUE = 10;
final int value = 10;
}
✅ 상수
static final
_
로 한다 -> 변수와 상수를 구분하기 위해서final
이 붙으면?-> 참조 대상 자체를 다른 대상으로 변경하지 못함
-> 참조하는 대상의 값은 변경할 수 있음
final Data data = new Data();
// data = new Data(); // 참조 대상 자체는 변경하지 못함 (컴파일 오류)
// 참조 대상의 값은 변경할 수 있음
data.value = 10;
data.value = 20;