본문 바로가기
Skills/Dart

final과 const의 차이

by Hoseok 2024. 2. 7.
728x90
반응형

 

 

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는 컴파일 시점에 이미 알려진 상수 값을 정의하는 데 사용됩니다. 

 

적절한 상황에서 각 키워드를 사용하면 애플리케이션의 성능과 안정성을 향상시킬 수 있습니다. 

 

 

 

 

 

728x90
반응형

'Skills > Dart' 카테고리의 다른 글

Dart에서의 super 키워드  (0) 2024.02.07
Dart의 필수, 선택적, 명명 매개변수 알아보기  (0) 2024.02.06
[Dart문법] 변수  (0) 2023.02.05