const와 final 키워드는 둘다 한번 변수에 설정한 값은 다시 재설정을 할수 없다는 공통점이 있다.
<script>
main(){
const String name = "망키";
final int age = 30;
name = "박망키" //에러
age = 28 //에러
}
</script>
const는 컴파일 타임에 상수를 설정한다. (Compile-time constant)
final은 런타임시에 결정되는 값도 상수로 설정할 수 있다.(Run-time constant)
그러므로 값이 컴파일 단계에서 결정될 경우 const,
런타임 단계에서 결정될 경우 final을 사용한다.
<script>
main(){
const DateTime now1 = new DateTime.now(); //error
//const는 실행시에 결정되는 값을 설정할 수 없다 정해진 값만 가능하다.
final DateTime now2 = new DateTime.now();
//final은 실행시에 결정되는 값도 설정가능하다.
}
</script>
공통점 | 차이점 |
---|---|
선언과 초기화가 동시에 발생, 초기화된 값은 변경 불가능 | final 클래스의 인스턴스를 할당 가능 값이 객체(Object)인 경우, 안의 요소는 변경 가능, rebuild 될 수있음. const 클래스의 인스턴스 할당 불가 값이 객체(Object)인경우, 안의 요소도 변경 불가능 |