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!;