[Dart] 상수 중 const 와 final 로 선언 할 때의 차이점

AsherKim·2023년 5월 22일
0

플러터 TIL

목록 보기
2/18

const 와 final 상수 선언 방법

const pi = 3.14;
final String name = '홍길동';
  • Dart 언어에서 final은 런타임 상수이며, const는 컴파일 상수입니다. 이 두 개념은 다음과 같은 차이점을 가지고 있습니다:
  • 초기화 시점: final 변수는 런타임 시에 초기화됩니다. 이는 변수에 값을 할당할 때 런타임에 결정되는 것을 의미합니다. 반면, const 변수는 컴파일 타임에 상수식으로 초기화되어야 합니다. 즉, 변수의 초기값은 컴파일 시점에 알려져야 합니다.
  • 사용 가능한 타입: final 변수는 임의의 타입의 객체로 초기화할 수 있습니다. 반면, const 변수는 기본 타입(primitive types)이나 const 생성자를 가진 객체 타입으로만 초기화할 수 있습니다.
  • 사용 범위: final 변수는 런타임에 초기화되기 때문에 동적인 초기화가 가능합니다. 이는 다른 final 변수나 메서드의 반환값 등을 사용하여 초기화할 수 있다는 것을 의미합니다. 반면, const 변수는 컴파일 타임에 상수식으로 초기화되기 때문에 동적인 초기화는 불가능합니다.
  • 메모리 할당: final 변수는 런타임에 초기화되므로 변수에 해당하는 메모리 공간이 할당됩니다. 반면, const 변수는 컴파일 타임에 상수식으로 초기화되므로, 변수에 해당하는 메모리 공간이 할당되지 않습니다. 대신 컴파일된 상수 값 자체가 사용됩니다.

요약하면, final 변수는 런타임에 초기화되고 변경할 수 없는 변수입니다. const 변수는 컴파일 타임에 초기화되고 변경할 수 없는 상수입니다. final은 동적 초기화가 가능하고 임의의 타입으로 초기화할 수 있으며, 메모리 할당이 발생합니다. const는 컴파일 타임 초기화만 가능하고 특정 타입으로 초기화해야 하며, 메모리 할당이 발생하지 않습니다.

profile
추리를 좋아하는 개발자

0개의 댓글