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 |