반응형
[Flutter] Dart 데이터 타입 및 타입변환 (자료형 및 형변환)
목차
- 데이터 타입
- 명시적 데이터 타입
- var와 dynamic
- 널허용(Nullable) vs 널불허(NonNull)
- 데이터 타입 확인 및 타입변환
- 타입 확인
- 타입 변환
1. 데이터 타입
다트에서 모든 변수는 객체이며, 데이터 타입을 명시적으로 지정하여 사용하거나, 변수에 입력되는 값에 따른 데이터 타입을 추론하여 사용할수 있습니다.
1) 명시적 데이터 타입
- int : 정수형
- double : 실수형
- num : 숫자형 (int와 double의 부모 클래스로 둘다 가능)
- bool : 논리형 (true or false)
- String : 문자열
- 작은따옴표('ex1') or 큰따옴표("ex2") 사용
- 삼중따옴표('''ex3''' or """ex4""")는 줄바뀜 및 탭등을 포함하여 화면에 보여지는대로 출력함
2) var과 dynamic
- var : 변수에 대입되는 값에 따라 데이터 타입을 컴파일시 추론하여 지정됩니다.
- 컴파일시 한번 결정된 이후 타입 고정
- (주의사항) var 변수에 초기값을 지정하지 않는 경우(=null) dynamic으로 적용됨 - dynamic : 변수에 대입되는 값에 따라 데이터 타입이 런타임에 동적으로 지정됩니다.
- 실행중에 대입되는 데이터에 따라 타입 변경
- (주의사항) 런타임에서 타입 오류의 가능성이 있으므로 필요한 경우에만 타입을 체크하여 사용할 것!
3) 널허용(Nullable) vs 널불허(NonNull)
다트에서는 변수 선언시 널(null) 허용 유무를 지정할 수 있습니다. 일반적인 변수 선언을 하게 되면 널 불허(NonNull) 상태가 되며, 데이터 타입에 ?를 추가하여 변수 선언을 하게 되면 널 허용(Nullable) 상태로 지정됩니다.
- 널 불허 (NonNull) : 해당 변수에 널(Null)을 허용하지 않음 (int, double String 등)
- 널 허용 (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) 타입 확인
- .runtimeType 속성 사용 : 데이터 타입을 반환합니다.
- is 연산자 사용 : 객체가 특정 타입인지를 확인하여 true or false를 반환합니다.
void main() {
dynamic data = 10;
data = "aaa";
if (data is String) {
print("True : ${data.runtimeType}");
}
}
True : String
2) 타입 변환
- .toInt() : 정수형으로 변환한 값을 반환합니다.
- .toDouble() : 실수형으로 변환한 값을 반환합니다.
- .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
반응형
'IT 개발 > Flutter & Dart' 카테고리의 다른 글
[Flutter] Dart 널 안전성 및 관련 연산자 (Null Safety) as, late, !, ?., ?[], ??=, ?? (0) | 2025.02.16 |
---|---|
[Flutter] Dart 상수 - const와 final 차이점 (0) | 2025.02.08 |