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는 컴파일 타임 초기화만 가능하고 특정 타입으로 초기화해야 하며, 메모리 할당이 발생하지 않습니다.