final
final 키워드는 변수가 한 번 할당되면 그 값을 변경할 수 없다는 것을 의미합니다.
final 변수의 값은 런타임에 결정될 수 있으며, 변수가 선언된 후 최초로 사용될 때 한 번만 설정됩니다.
final 변수는 한 번 할당되면 메모리 주소가 고정되므로, 해당 주소에 저장된 값은 변경할 수 없습니다.
final String greeting = '안녕하세요!';
여기서 greeting 변수는 문자열 '안녕하세요!'로 초기화되며, 이후에는 다른 값으로 변경할 수 없습니다.
하지만 greeting 변수의 값은 런타임에 결정되므로, 예를 들어 사용자 입력이나 다른 런타임 조건에 기반하여 값을 할당할 수 있습니다.
const
const 키워드는 컴파일 타임 상수를 정의하는 데 사용됩니다.
즉, const로 선언된 변수의 값은 컴파일 시점에 결정되어야 하며, 프로그램 실행 중에는 변경될 수 없습니다.
const를 사용하면 Dart 컴파일러는 해당 변수의 값을 컴파일 시점에 알 수 있으므로, 성능 최적화의 이점을 가질 수 있습니다.
const double pi = 3.141592653589793;
pi 변수는 수학적 상수 π의 값을 나타내며, 이 값은 프로그램 실행 전에 이미 알려져 있고 변경될 수 없습니다.
따라서 const로 선언하는 것이 적합합니다.
final과 const의 주요 차이점
초기화 시점
final 변수는 런타임에 초기화될 수 있으며, 최초 사용 시점에 한 번만 값을 할당받습니다.
반면, const 변수는 컴파일 시점에 초기화되어야 하며, 실행 중에는 그 값이 변경될 수 없습니다.
메모리 사용
const로 선언된 변수는 컴파일 시점에 상수로 처리되므로, 동일한 const 값은 메모리 내에서 단일 인스턴스를 공유할 수 있습니다.
이는 메모리 사용량을 최적화하는 데 도움이 됩니다.
반면, final 변수는 각각의 인스턴스가 메모리에 별도로 존재할 수 있습니다.
결론
final과 const는 Dart에서 불변성을 보장하는 강력한 도구입니다.
final은 런타임에 한 번만 설정되는 변수에 적합하며, const는 컴파일 시점에 이미 알려진 상수 값을 정의하는 데 사용됩니다.
적절한 상황에서 각 키워드를 사용하면 애플리케이션의 성능과 안정성을 향상시킬 수 있습니다.
'Skills > Dart' 카테고리의 다른 글
Dart에서의 super 키워드 (0) | 2024.02.07 |
---|---|
Dart의 필수, 선택적, 명명 매개변수 알아보기 (0) | 2024.02.06 |
[Dart문법] 변수 (0) | 2023.02.05 |