공통점
상수(constant)로 만든다.
차이점
초기화 시점이 다르다.
초기화 시점
const → 컴파일 타임에 값을 결정 → 런타임에서 값의 결정 불가능
final → 컴파일 타임 이후에도 값을 결정 → 런타임에도 값의 결정 가능
(+ final로 정의된 List는 추가연산을 사용할 수 있다.)
예시
DateTime.now() 라는 함수가 있다.
이 함수는 현재 시간을 불러오기 때문에, 불러올 때마다 값이 달라진다.
즉 일단 프로그램을 실행해야, 함수로 불러온 값을 확인할 수 있다. (= 런타임에 확인할 수 있다)
const 키워드는 런타임에서 값의 결정이 불가능하고
final 키워드는 런타임에서 값의 결정이 가능하므로 다음과 같은 결과를 얻을 수 있다.
(함수의 생성자가 const로 정의되었다면, const에서도 오류가 나지 않는다)
final DateTime curTime = DateTime.now(); // 문제 없음 const DateTime curTime = DateTime.now(); // compile error