Notice
Recent Posts
Recent Comments
Link
«   2025/10   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

JunHyeok

[Flutter] 1. final과 const 변수 이해하기 본문

Flutter/조금매운맛

[Flutter] 1. final과 const 변수 이해하기

junhyeok-log 2024. 6. 13. 17:55

플러터에서 final과 const 키워드의 차이점

finalconst 키워드는 모두 변수의 값을 변경할 수 없도록 하는 데 사용됩니다.

1. 값 초기화 시점

  • final: ** 변수 선언 시점에 **초기값을 반드시 지정해야 합니다.
    • 예시: final String name = 'Flutter';
  • const: 변수 선언 시점에 초기값을 지정해야 하고, 컴파일 타임에 값이 결정됩니다.
    • 예시: const String message = 'Hello, Dart!';

2. 메모리 할당

  • final: 런타임에 메모리 할당
  • const: 컴파일 타임에 메모리 할당. 불변 객체로 저장되어 프로그램 실행 속도 향상

3. 객체 생성

  • final: 새로운 객체 생성 가능
    • 예시: final List<String> numbers = ['one', 'two', 'three'];
  • const: 기존 객체 참조 또는 새로운 불변 객체 생성만 가능
    • 예시: const List<String> numbers = ['one', 'two', 'three'];

4. 사용 권장 사항

  • 변수 값이 변경되지 않는 경우: const 사용 권장 (성능 향상)
  • 런타임에 값 할당이 필요한 경우: final 사용
  • 객체의 불변성을 명확하게 표현하고 싶을 때: const 사용

예시

// const 사용 예시 (불변 객체)
const String appName = 'My Flutter App';
const Color primaryColor = Colors.blue;

// final 사용 예시 (런타임에 값 할당)
final List<int> lottoNumbers = [1, 2, 3, 4, 5];
lottoNumbers.add(6); // 가능 (final이지만, 런타임에 값 변경)

// 잘못된 const 사용 예시 (컴파일 에러)
const List<int> numbers = [1, 2, 3];
numbers.add(4); // 불가능 (const는 컴파일 타임에 값 결정)
  • const: 컴파일 타임에 값 결정, 불변 객체, 메모리 할당 최적화, 성능 향상 + (stateless 위젯처럼, rebuild 될 수 있음)
  • final: 런타임에 값 결정, 객체 생성 가능, 명확한 불변성 표현