728x90
728x90

제목

들어가며

  • Dart에서 @var@, @const@, @final@ 자료형의 차이점을 간단하게 정리해본다.

 

자료형

① var

특징

  • 타입 추론 가능
  • 값 변경 가능
  • 재할당(Reassignment) 가능
  • 컴파일(Compile) 시점타입 확정
  • 런타임(Runtime) 시점에 메모리에 할당
  • 보통 상태 값이나 변경되는 데이터에서 사용한다.
// 사용 예 1 : 재할당 가능
var a = 10;
a = 20;  // 가능

// 사용 예 2 : 타입 추론
var b = 10;   // int로 타입 추론 (컴파일 타임에 확정, 런타임에 메모리에 할당)
b = "hello";  // 불가능 (컴파일 에러)

 

② final

특징

  • 딱 한번만 값 할당
  • 런타임(Runtime) 시점에 값 결정 가능
  • 객체의 참조는 고정, 내부 값은 변경 가능
  • Flutter에서 위젯에 쓸 경우, 매번 새 객체를 생성하므로 최적화에 좋지 않다.
  • 보통 API 응답이나 계산 결과를 처리할 때 사용한다.
// 사용 예 1 : 값 재할당 불가능
final a = 10;
a = 20;  // 불가능

// 사용 예 2 : 객체의 참조는 고정, 내부 값 변경 가능
final list = [1, 2, 3];
list.add(4);  // 가능
list = [];    // 불가능

// 사용 예 3 : 런타임 시점에 값 결정 가능
final now = DateTime.now();   // 가능

// 사용 예 4 : Flutter
final text = Text('Hello');  // 매번 새 객체 생성 -> 최적화에 좋지 않음.

 

 

③ const

특징

  • 컴파일 시점에 값 확정
  • 절대 변경 불가
  • 객체 자체도 완전히 불변
  • Flutter에서 위젯에 쓸 경우, 매번 새로운 객체를 재생성하지 않아 최적화에 좋다. (메모리 절약, 성능 향상)
  • 보통 위젯, 색상, padding, 아이콘 등에서 사용한다.
// 사용 예 1 : 객체 자체도 완전히 불변
const list = [1, 2, 3];
list.add(4);  // 불가

// 사용 예 2 : 컴파일 시점에 값 결정 불가능
const now = DateTime.now();   // 불가

// 사용 예 4 : Flutter
const Text('Hello');  // 매번 새 객체 생성하지 않음. -> 최적화에 좋음.

 

정리

구분 @var@ @final@ @const@
타입 추론 O O O
재할당 O X X
내부 값 변경 O O X
결정 시점 런타임 런타임 컴파일 타임
최적화 (Flutter) X O

 

참고 사이트

 

Variables

Learn about variables in Dart.

dart.dev

 

728x90
728x90

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

[Dart] Trailing Comma 적용 방법  (0) 2026.02.07
[Dart] 함수 파라미터(Argument/Parameter)  (0) 2026.01.30