본문 바로가기
Study/Flutter

[Dart] Final , Const 차이점

공통점

이 둘은 모두 상수를 선언하는 키워드 입니다.

둘다 뒤에 어떠한 변수 타입을 명시해주지 않아도,

초기화 되는 값으로 타입을 추론해주는 편리함이 있습니다.

 

차이점1

Final , Const 둘다 선언후에 재설정이 불가하지만, 어떤 차이가 있을까요?

const컴파일 타임에 반드시 초기화되야 하며, (컴파일 안전)

final런타임 시점에도 객체를 초기화 해줄 수 있습니다.(런타임에서 지정가능)

 

 

예시코드

1) 컴파일 시점 초기화

아래와 같이 컴파일 시점에 초기화 모두 에러없이 수행된다.

 

2) 런타임시점 초기화

아래와 같이 런타임 시점에 값이 결정되는 경우, const 는 지정 불가하다는 에러가 발생한다.

main() { 
  const DateTime now1 = new DateTime.now(); // error const 는 실행시에 결정되는 값을 설정할 수 없다. 정해진 값만 가능하다. 
  final DateTime nw = new DateTime.now(); // final 은 실행시에 결정되는 값도 설정할 수 있다. 
}

const는 반드시 컴파일시점에 초기화가 필요하다는것을 알 수 있다.

 

const 는 우리가 흔히 사용하는 상수 변수 (원주율, 최댓값, 이름, 타이틀 , 위젯 등)에 많이 사용하며

final 은 const 사용의 경우뿐 아니라, 인스턴스를 담거나, 지연 초기화 등이 필요한 부분에서 사용이 가능합니다.  

 

 

차이점 2

const는 컴파일 된 후 오브젝트의 필드 수정이 불가하지만,

final은 런타임중에 오브젝트의 필드 값을 변경 할 수 있습니다.

 

const와 final은 변경불가한 객체와 데이터를 만드는 키워드로

프로그래밍을 좀 더 리소스낭비를 줄여 최적화하고, 안정성을 높이는데 중요한 요소이다.

둘의 차이를 잘 알고 사용하는 습관을 가지자.

 

참조 : https://dart.dev/guides/language/language-tour#final-and-const

 

'Study > Flutter' 카테고리의 다른 글

[Dart] 동적변수 var, dynamic 비교  (0) 2022.05.09
[Dart] Future async await 란?  (0) 2022.05.05
[Flutter] Hot Restart, Hot Reload 차이점  (0) 2022.05.05
[Flutter] Pubspec.yaml 에 대해서  (0) 2022.05.05
[Flutter] 공부 사이트  (0) 2022.05.05