공통점
const와 final은 값을 한 번 할당한 후 변경할 수 없는 변수를 선언할 때 사용됩니다.
const
- const는 컴파일타임에 값이 고정되는 상수를 선언할 때 사용합니다.
- 코드가 컴파일될 때부터 값이 결정되며, 이후 어떤 상황에서도 값을 변경할 수 없습니다.
- const는 주로 절대 변하지 않는 값이나 애플리케이션이 시작될 때부터 이미 고정된 값을 선언할 때 유용합니다.
final
- final은 한 번만 값을 할당할 수 있는 변수를 선언할 때 사용합니다.
- 런타임에 값이 결정되기 때문에, 앱 실행 시에 변수의 값이 설정됩니다.
- 한 번 값이 할당된 이후에는 값을 변경할 수 없습니다.
- 주로 실행 중에 동적으로 할당해야 하는 불변 값을 선언할 때 사용합니다.
컴파일타임 (Compile Time)
- 컴파일타임은 코드를 기계어로 변환하는 시점입니다. 즉, 코드가 실행 파일로 만들어지는 단계입니다.
- 이 단계에서 코드는 컴파일러에 의해 검토되고, 문법 오류, 타입 오류 등이 감지됩니다.
- 컴파일 오류는 주로 문법 오류, 변수 타입 오류 등으로, 코드가 제대로 작성되지 않았을 때 발생합니다.
런타임 (Run Time)
- 런타임은 코드가 실행되는 시점입니다. 사용자가 앱을 실행하여 실제로 동작하는 과정에서 발생하는 시점입니다.
- 이 단계에서는 코드가 실제로 수행되기 때문에, 실행 중 발생하는 오류(예: null 값 참조, 네트워크 실패)와 같은 런타임 오류가 발생할 수 있습니다.
- 예를 들어, 데이터베이스에서 데이터를 가져오거나, UI와 상호작용하는 것처럼 실제 사용자와의 상호작용을 포함한 작업이 이 시점에서 이루어집니다.
const와 final 차이점 요약
| 특성 | const | final |
|---|
| 값의 결정 시점 | 컴파일타임 | 런타임 |
| 값의 변경 여부 | 컴파일 시점부터 변경 불가 | 한 번 할당 후 변경 불가 |
| 사용 용도 | 절대 변하지 않는 상수 값 | 실행 중에 할당되는 불변 값 |
| 예시 | const double pi = 3.14159; | final DateTime now = DateTime.now(); |