Development/Flutter
[Flutter] Dart 문법 - 01. 데이터 타입
가비닷
2024. 4. 8. 18:06
1. 데이터 타입
- int
- double
- String(시작이 대문자이니 클래스 겠지?)
- bool
- num(int, double이 상속받음)
int num1 = 10;
double num2 = 3.0;
String strValue = 'name';
bool isTrue = true;
- 해당 변수의 타입 확인
- is
- runtimeType
//is로 현재 변수가 int가 맞는지 확인
print(num1 is int); //true
print(num2 is int); //flase
print(num1.runtimeType); //int
print(strValue.runtimeType); //String
- 타입 추론
- 추론을 통해 이후 사용된 값을 기준으로 타입을 정함
- var (컴파일시 코드로 타입이 결정됨)
- dynamic (런타임시 코드로 타입이 결정됨, 사용자에게 어떤 타입이라도 받아서 사용할 특수한 경우에만 사용함)
var i = 10; //int
var d = 19.2; //double
var str = 'name'; //String
dynamic ab = 10; //int
dynamic bb = 10.11; //double
- 상수
- const (컴파일시 상수를 정의)
- final (런타임시 상수를 정의)
- const가 final 보다 불변의 성질이 더 강력함.
- final은 주로 widget의 생성자에서 설정되어 변하지 않아야 하는 값들에 사용됨
//예를 들어 프로그램이 실행될 때마다 실행되는 시간을 저장하고 싶다면
//final 실행 시에 시간이 결정되므로 사용 가능
final timeLog = DateTime.now();
//컴파일 시의 현재시간은 의미가 없으므로 사용 불가능하다.
const timeLog = DateTime.now();
- null 처리
- 기본적으로 int 등 null의 사용이 불가능한 변수에는 동일하게 사용이 불가능함.
- 타 언어처럼 ?, !등의 null 처리등이 사용 가능함.
- 타 언어와 동일하게 nullable 변수(int?, double?등)는 일반 변수(int, double)에 바로 대입 불가능(확인 or ! 사용필요)
- 반드시 정확하게 ?!등을 이해하고 해당 변수의 null 처리에 대해 명확한 경우에만 사용할껏!!!!
int intAge = null; //이렇게 사용 불가능
int? intAge = null; //위 코드를 사용가능하도록 null 설정
print(intAge == null); //true
//?인 intAge를 intAgeUser에 대입하려면 if 또는 ! 필요
if(intAge != null) { //if로 null 체크 처리후
int intAgeUser = intAge;
}
//!로 처리
int intAgeUser = intAge!;