플러터/문법 및 설치

[플러터] 기초 문법 익히기) 데이터,변수,데이터타입이 무엇일까?

JungMayo 2025. 1. 2. 16:07

 

데이터,변수,데이터타입?

1. 데이터 : 사물이나 현상에서 얻어진 사실 또는 값을 의미

2. 변수 : 값을 저장할 수 있는 메모리 공간, 즉 값을 저장해 놓고 이후에 재사용하거나 변경할 수 있도록 메모리 공간을 이름으로 할당한 개념

3. 데이터 타입 : 메모리 공간에 들어간 값의 형태


 

  int n1 = 10;
  double d1 = 10.0;
  bool b1 = true;
  String name = '정마요'; //홑 따옴표 권장 사항

  // dart 기본 메모리 공간 3가지
  // 스택(stack) - 지역 변수, 매개 변수
  // 힙(heap) - new / 리터럴로 선언된 값
  // 정적 영역(Static) - 전역 변수, 클래스의 static 변수, 컴파일 시점 상수 등

- 자바와 달리 boolean을 bool이라고 쓴다

 

위와 같이 데이터타입을 설정해놓았는데 예상치 못한 타입의 값이 들어올 경우, 프로그램이 제대로 동작하지 않을 수 있기 때문에 runtTimeType을 활용해서 타입 체크를 할 수 있다. 예제는 아래와 같다

void main() {
  // 타입 확인 - runtimeType 의 활용
  // 디버깅 및 오류 방지
  // 예상치 못한 타입의 값이 들어올 경우, 프로그램이 제대로 동작하지 않을 수 있다.
  // runtimeType 활용해서 타입 체크를 할 수 있다.

  int n1 = 10;
  double d1 = 10.0;
  bool b1 = true;
  String s1 = '정마요'; // 홑따옴표 권장 사항

  print('정수 : ${n1.runtimeType}');
  print('실수 : ${d1.runtimeType}');
  print('참/거짓 : ${b1.runtimeType}');
  print('문자열 : ${s1.runtimeType}');
}

정수 : 10
실수 : 10.0
참/거짓 : true
문자열 : 정마요
로 나오게 된다.

 

 

타입 추론 : var, dynamic

- 위는 int,double 처럼 변수의 타입을 명시해주었는데 명시해주지 않아도 자동으로 적절한 타입을 결정해주는 기능이 있는데 그것인 타입 추론이다.  

- 자바스크립트와 동일하게 var가 들어가고 또 하나 추가된 것은 dynamic이다.

- Dart 언어에서의 타입추론 : var , dynamic

1. var :   var의 특징은 키워드로 한 번 초기화된 데이터타입은 다른 데이터 타입으로 변경이 불가능하다.

  var n1 = 1;
  var d1 = true;
  var c1 = 10.1;
  var s1 = '정마요';

  print('정수 ? : ${n1.runtimeType}');
  print('실수 ? : ${d1.runtimeType}');
  print('불린 ? : ${c1.runtimeType}');
  print('문자열 ? : ${s1.runtimeType}');
  
  // n1 = 20.1 이런식으로 다른 데이터타입의 데이터를 넣을 때 오류 발생

2. dynamic : dynamic의 특징은 모든 타입을 받을 수 있고 다른 타입으로 변경도 가능하다.

 

  dynamic dyN1 = 100;
  dyN1 = 20.5;

  print('dyN1 : ${dyN1.runtimeType}');

// dynamic은 다른 타입으로 변경이 가능하기 때문에 dyN1 = 20.5;와 같이 사용 가능