Flutter (앱 개발)/Dart 코드 첨부 파일

[Dart 변수와 데이터 타입] var, dynamic, const, final 차이점 정리(명령 프롬프트 첨부 파일 제공)

Ize𓆜 2025. 2. 23. 18:38
728x90
728x90

 

Dart에서

var, dynamic, const, final

차이점 정리 🎯📌

 

Dart에서는 변수를 선언할 때

var, dynamic, const, final

키워드를 사용할 수 있습니다.

 


각각의 키워드는

변수의 타입 결정 방식과

값 변경 가능 여부가 다르므로,

정확한 차이를 이해하는 것이 중요합니다.

 

이번 포스팅에서는

각 키워드의 차이점과 사용법을

코드 예제와 함께

상세히 정리하겠습니다. 🚀

 


먼저

더 많은 정보, 혹은


순서대로 포스팅을 보고 싶다면


아래 노션을 확인해주세요. 

 



https://mongmung-i.notion.site/Flutter-1a39b1e2cdaa80319a0fc2a89281dc71?pvs=4

 

Flutter 어플 개발 일지 | Notion

Made with Notion, the all-in-one connected workspace with publishing capabilities.

mongmung-i.notion.site

https://mongmung-i.notion.site/19f9b1e2cdaa80a984ade6141a87fd29?pvs=4

 

창업 트랙 사전 캠프 𓆲 | Notion

이 곳은 창업 트랙 사전 캠프 진행 사항을 정리하는 곳입니다.

mongmung-i.notion.site

 

 

 


Ⅰ. 서론: Dart에서 변수 선언 시 고려해야 할 사항 🤔

 

프로그래밍을 하다 보면 변수를 선언할 때

값을 변경할 수 있는지,

어떤 데이터 타입을 저장할지

고려해야 합니다.


Dart에서는 이를 위해

var, dynamic, const, final

네 가지 함수를 활용합니다. 

 

 

그렇다면, 어떤 경우에 어떤 키워드를 사용해야 할까요?
예를 들어,

  • var을 사용하면 타입을 자동으로 추론하면서도 값 변경 가능
  • dynamic을 사용하면 변수의 타입을 자유롭게 변경 가능
  • const는 컴파일 시점에 값이 결정되는 변경 불가능한 상수
  • final은 한 번 할당되면 바꿀 수 없는 값, 하지만 런타임에서 결정 가능

 

이번 포스팅에서는

각 키워드의 차이점과 사용법을

코드 예제와 함께

자세히 정리하겠습니다. 🚀

 


변수 선언 시 타입을 지정하는 방식

 

Dart에서는 변수를 선언할 때 

다양한 방법을 사용할 수 있습니다.

 


각 방식마다

 타입 결정 방식과 

변경 가능 여부가 다르므로 

적절한 선택이 필요합니다.

 

명시적 타입 지정 → int age = 30;
타입 추론(var) → var name = 'Dart';
동적 타입(dynamic) → dynamic value = 'Hello';
변경 불가능한 값(const, final) → const pi = 3.14;


변경 가능한 변수와 변경 불가능한 변수

 

 

변수는 크게

변경 가능한 변수(Mutable)

변경 불가능한 변수(Immutable)

로 나뉩니다.

 

 

변경 가능 (Mutable) → var, dynamic
변경 불가능 (Immutable) → const, final

값을 변경할 필요가 없다면 const 또는 final을 사용하는 것이 좋습니다! 🚀


Ⅱ. 본론: var, dynamic, const, final 차이점 분석 🏗️

 

Step 1: var (타입 추론 변수)와 활용법

 

📌 var이란?


var 키워드는 변수를 선언할 때

Dart가 자동으로 타입을

추론하도록 도와줍니다.

 


한 번 타입이 결정되면,

다른 타입으로 변경할 수 없습니다.

 

 

Dart가 자동으로 추론하여 지정해주니,

더욱 간편한 타입 추론변수 

살펴볼까요?

 

 

Dart가 자동으로 타입을 추론하여 지정
한 번 타입이 결정되면 변경할 수 없음 (강타입)
값 변경 가능 (mutable)

void main() {
  var name = 'Flutter';  // Dart가 자동으로 String 타입으로 추론
  print('이름: $name');  // 출력: Flutter

  // name = 42;  // ❌ 오류 발생 (String으로 타입이 고정되었기 때문)
}

 

정리:

  • var은 초기 값에 따라 타입이 결정되며, 이후 변경 불가능합니다.
  • 타입을 명확하게 알고 있을 때 사용하면 좋습니다.
  • 타입이 변하지 않는 경우 var을 사용하면 가독성이 높아집니! 🎯

Step 2: dynamic (동적 타입 변수)와 차이점

 

📌 dynamic이란?

 

dynamic 키워드는 

변수의 타입을 자유롭게 

변경할 수 있는 변수입니다.


즉, 한 번 문자열을 저장했다가 

나중에 숫자로 바꿀 수도 있습니다.

 

 

변수의 타입이 실행 중에 변경될 수 있음
타입이 자동으로 결정되지 않음 (정확한 타입 체크 X)
값 변경 가능 (mutable)

void main() {
  dynamic value = 'Hello';  
  print(value); // 출력: Hello

  value = 42;  // 타입 변경 가능
  print(value); // 출력: 42
}

정리

  • dynamic은 타입이 정확하지 않거나, 실행 중 타입이 바뀔 가능성이 있는 경우 사용
  • 하지만, 잘못 사용하면 예기치 않은 오류 발생 가능

타입 안정성이 필요하다면 var을 사용하고, 꼭 필요한 경우에만 dynamic을 사용합니다! 🚨


Step 3: const (컴파일 타임 상수)와 활용법

 

📌 const란?

 

const 키워드는 

컴파일 타임에 값이 결정되며, 

이후 변경할 수 없는 상수를 선언할 때 

사용됩니다.


예를 들어, 

원주율(pi)처럼 

변하지 않는 값에 적합합니다.

 

 

변경 불가능한 상수를 선언할 때 사용
컴파일 타임에 값이 결정되어야 함
반드시 값을 할당해야 함 (null 불가)

void main() {
  const double pi = 3.14;  // 변경 불가능한 상수
  print(pi); // 출력: 3.14

  // pi = 3.1415;  // ❌ 오류 발생 (const 변수는 수정 불가능)
}

 

정리

  • const는 변경할 필요 없는 값(예: 수학 상수, 앱 버전 등)에 사용
  • 컴파일 타임에 이미 값이 정해져 있어야 함

절대 변하지 않는 상수라면 const를 사용하는 것이 좋음! 🚀


Step 4: final (런타임 상수)와 차이점

 

📌 final이란?

 

final 키워드는 한 번 값을 할당하면 

변경할 수 없는 변수입니다.


하지만

 const와 달리 컴파일 시점이 아니라, 

실행 중(런타임)에 

값이 결정될 수 있습니다.



예를 들어, 

현재 날짜를 저장하는 변수를 만들 때

 final을 사용할 수 있습니다.


날짜는 프로그램 실행 시 결정되지만, 

실행 중 변경해서는 안 되기 때문입니다.

 

 

한 번 값을 할당하면 변경할 수 없음
하지만, 컴파일 타임이 아닌 런타임에서 값이 결정될 수 있음
클래스 내에서 상수를 선언할 때 유용

void main() {
  final DateTime now = DateTime.now();  // 실행 시점에서 값이 결정됨
  print(now);

  // now = DateTime.utc(2023, 12, 31); // ❌ 오류 발생 (final 변수는 재할당 불가)
}

정리

  • final은 값이 한 번만 설정되면 변경되지 않음
  • 컴파일 타임이 아닌 런타임에서 값이 정해질 수도 있음

const와 달리 실행 시점에서 값이 정해지는 경우 final을 사용! 🚀


Step 5: const vs final 차이점 완벽 정리

 

 

📌 const와 final은 

모두 변경할 수 없는 상수이지만,

언제 값이 결정되는지에 따라

 사용법이 다릅니다.

 

차이점 const final
값 변경 여부 ❌ 변경 불가능 ❌ 변경 불가능
값 결정 시점 컴파일 타임 런타임
클래스 내에서 사용 가능 여부 ✅ 사용 가능 ✅ 사용 가능
실행 중 값 변경 가능 여부 ❌ 불가능 ❌ 불가능
사용 예시 const pi = 3.14; final today = DateTime.now();

🚀 요약:

  • 컴파일 타임에 값이 확정되어야 한다면 → const
  • 런타임에서 값이 결정되는 경우 → final

 

Flutter UI 요소를 최적화하려면 const를 적극 활용하는 것이 좋습니다! 🎯

 


Ⅲ. 언제 어떤 변수를 사용해야 하는가? ✅

 

이제까지 배운 내용을 정리해보겠습니다.


Dart에서 변수를 선언할 때

어떤 상황에서

어떤 키워드를 사용해야 하는지

살펴보겠습니다.

 

void main() {
  var language = 'Dart'; // 타입 자동 지정 (String)
  dynamic value = '변경 가능'; // 타입 변경 가능
  const double pi = 3.1415; // 변하지 않는 상수
  final DateTime today = DateTime.now(); // 런타임에 결정되는 상수

  print('💡 프로그래밍 언어: $language');
  print('🔄 dynamic 값: $value');
  
  value = 42; // dynamic은 타입 변경 가능
  print('🔄 dynamic 값 변경 후: $value');

  print('🔢 원주율 (const): $pi');
  print('📅 오늘 날짜 (final): $today');
}

추론 변수 기초 예제.txt
0.00MB

 

 

최적의 변수 선언 방식 선택하기

 

변경 가능한 변수 → var (타입이 변하지 않는 경우)
동적 타입이 필요한 경우 → dynamic (가능한 한 사용 지양)
절대 변하지 않는 상수 → const (컴파일 타임 결정)
한 번만 설정되지만 실행 중 결정되는 값 → final (런타임 결정)


변수 선언 시 주의할 점

 

무조건 dynamic을 사용하면 타입 오류를 찾기 어려움 → var을 선호
Flutter UI에서 const를 적극 활용하면 성능 최적화 가능
상수 값을 다룰 때 final과 const 차이를 명확히 이해하고 선택

 

즉, 

Dart에서 변수 선언 시

상황에 따라

적절한 키워드 사용하여야 하고


변경 가능성에 따라

var, final, const를

올바르게 활용하며


const는

컴파일 타임 상수,

final은 런타임 상수라는 것을

알았습니다. 

 

728x90
728x90