반응형

 

[Flutter] Dart 데이터 타입 및 타입변환 (자료형 및 형변환)

 

 

   목차

  1. 데이터 타입
    1. 명시적 데이터 타입
    2. var와 dynamic 
    3. 널허용(Nullable) vs 널불허(NonNull)
  2. 데이터 타입 확인 및 타입변환 
    1. 타입 확인
    2. 타입 변환

 

 

1. 데이터 타입

 

다트에서 모든 변수는 객체이며, 데이터 타입을 명시적으로 지정하여 사용하거나, 변수에 입력되는 값에 따른 데이터 타입을 추론하여 사용할수 있습니다.

 

1) 명시적 데이터 타입

  1. int : 정수형 
  2. double : 실수형
  3. num : 숫자형 (int와 double의 부모 클래스로 둘다 가능)
  4. bool : 논리형 (true or false)
  5. String : 문자열
    - 작은따옴표('ex1') or 큰따옴표("ex2") 사용
    - 삼중따옴표('''ex3''' or """ex4""")는 줄바뀜 및 탭등을 포함하여 화면에 보여지는대로 출력함

 

2) var과 dynamic

  1. var : 변수에 대입되는 값에 따라 데이터 타입을 컴파일시 추론하여 지정됩니다. 
    - 컴파일시 한번 결정된 이후 타입 고정
    - (주의사항) var 변수에 초기값을 지정하지 않는 경우(=null) dynamic으로 적용됨
  2. dynamic : 변수에 대입되는 값에 따라 데이터 타입이 런타임에 동적으로 지정됩니다.
    - 실행중에 대입되는 데이터에 따라 타입 변경 
    - (주의사항) 런타임에서 타입 오류의 가능성이 있으므로 필요한 경우에만 타입을 체크하여 사용할 것! 

 

3) 널허용(Nullable) vs 널불허(NonNull)

 

다트에서는 변수 선언시 널(null) 허용 유무를 지정할 수 있습니다. 일반적인 변수 선언을 하게 되면 널 불허(NonNull) 상태가 되며, 데이터 타입에 ?를 추가하여 변수 선언을 하게 되면 널 허용(Nullable) 상태로 지정됩니다.

  1. 널 불허 (NonNull) : 해당 변수에 널(Null)을 허용하지 않음 (int, double String 등)
  2. 널 허용 (Nullable) : 해당 변수에 널(Null)을 허용함 (int?, double?, String? 등)

 

[사용예제]

void main() {
  
  //--- 명시적 데이터 타입 ------------
  int n1 = 1;			// int
  double n2 = 2.0;		// double
  num n3 = 3;			// int
  n3 = 4.0;			// double
  
  bool b1 = true;		// bool
  String s1 = "AAA";		// String
  
  // --- var --------------------------
  var v1 = 1;			// int
  var v2 = 1.0;			// double
  var v3 = "BBB";		// String
  var v4;			// dynamic 적용됨
  // v1 = 2.0; 			// Error 발생
  v4 = 2.0;			// double
  v4 = "BBB"			// String
  
  //--- dynamic -----------------------
  dynamic d1 = 2;		// int
  d1 = 2.0;			// double
  d1 = "CCC";    		// String
  
  //--- NonNull vs Nullable -----------
  // int a = null; 		// Error 발생
  int? b = null; 
}

 

 

 

2. 데이터 타입확인 및 타입변환 (형변환)

 

1) 타입 확인

  1. .runtimeType 속성 사용 : 데이터 타입을 반환합니다. 
  2. is 연산자 사용 : 객체가 특정 타입인지를 확인하여 true or false를 반환합니다.
void main() {
  dynamic data = 10;
  data = "aaa";
    
  if (data is String) {
    print("True : ${data.runtimeType}");
  }
}
True : String

 

 

2) 타입 변환

  1. .toInt() : 정수형으로 변환한 값을 반환합니다.
  2. .toDouble() : 실수형으로 변환한 값을 반환합니다.
  3. .toString() : 문자열로 변환한 값을 반환합니다.

    cf) 문자열을 다시 숫자로 형변환 하려면 int.parse() 또는 int.tryParse()를 사용하면 됩니다.
    - int.parse()는 형변환 실패시 예외(Exception)를 발생합니다. (따라서 try-catch 문 사용)
    - int.tryParse() 변환에 실패할 경우 null을 반환합니다. (따라서 null을 허용하는 int? 사용)
void main() {
  double a = 2.2;
  int b = a.toInt();
  String c = b.toString();
  int? d = int.tryParse(c);

  print ("a = $a  ${a.runtimeType}");
  print ("b = $b  ${b.runtimeType}");
  print ("c = $c  ${c.runtimeType}");
  print ("d = $d  ${d.runtimeType}");
}
a = 2.2   double
b = 2     int 
c = 2     String
d = 2     int

 

 

반응형

+ Recent posts