초기값이 저장되면 최종적인 값이 되어 프로그램 실행 도중에 수정할 수 없다.
Q.프로그램 실행도중에 수정할 수 없다?
사실 이게 뭔소린지 잘 모르겠지만 일단 한번 초기화된 값은 더이상 수정될 수 없다고 받아들였다.
public class Final {
final String nation = "Korea";
int ssn;
public Final(int ssn) {
this.ssn=ssn;
}
public static void main(String[] args) {
Final flash = new Final(32342);
System.out.println(flash.ssn);
flash.ssn = 3434;
System.out.println(flash.ssn);
}
}
A. 실험결과 일반적인 int로 선언된 위의 코드는 ssn값이 아무 문제없이 변경되었으나 아래 코드에서 final필드로 바꾸는 순간 컴파일 에러가 발생했다.
public class Final {
final String nation = "Korea";
final int ssn;
public Final(int ssn) {
this.ssn=ssn;
}
public static void main(String[] args) {
Final flash = new Final(32342);
System.out.println(flash.ssn);
flash.ssn = 3434;
System.out.println(flash.ssn);
}
주의사항
final필드로 선언해도 서로다른 객체에서 인자값을 달리하여 호출할 경우에는 final선언의 효력을 못보고 평소처럼 인자값에 따라서 각 객체에 값이 저장된다.