본문 바로가기

Flutter

[Dart, Flutter] Const vs. Final (Const와 Final의 차이점)

728x90

Final VS Const

Final과 Const는 둘 다 변경할 수 없는 속성을 뜻한다.

void main() {
    const    int myConst = 2; 
    final int myFinal = 3;

    myConst = 4; // error 발생, Const 변수에는 값을 할당할 수 없다.
    myFinal = 6; // error 발생, Final 변수에는 값을 할당할 수 없다.
} 

 

위와 같이 두 속성은 둘다 한번 값을 대입하면 변경할 수 없어 같은 일을 하지만 미묘한 차이점이 있다.

const 속성은 컴파일 타임 상수인 반면 final은 전체 소스 주기 중 한 번만 설정된다.

다시 말해 final은 실행 중 값이 결정되지만 const는 컴파일 시 값이 결정된다. 

 

 

예시

final finalTime = DateTime.now(); // 실행 중 시간이 결정되므로 사용 가능
const constTime = DateTime.now(); // error 발생, 컴파일 시 시간을 담을 수가 없음

 

정리

  • 일반 String은 언제든지 바꿀 수 있다.
  • final은 코드가 실행되면서 값이 바뀔 수 있지만 결정되고 나서는 바꿀 수 없다.
  • const는 코드 실행 전 부터 값이 정해져서 바꿀 수 없다.

 

실행되면서 값이 정해지는 불변상수를 사용하고 싶다면 final을,
더욱 강도높은 불변적인 상수를 사용하고 싶다면 const를 사용하자.