기본자료형
var 자료형
- 특정 자료형이 아니다.
- 여러가지 자료형을 사용할 수 있다.

- 하지만 중간에 자료형을 변환할 수 없다.
- name변수에 “lee’s” 라는 string 값을 넣어주었을때는 에러가 없지만
- 그 다음 1 이라는 int 값을 넣었을때 에러가 발생한다.

dynamic 자료형
- dynamic : var과 비슷하지만 차이점은 여러가지 형으로 변경이 가능
- var는 처음 선언할때 형이 정해지면 나중에 변경이 안됨
- name이라는 dynamic 변수에 처음에는 string형으로 나중에는 int형으로 값을 넣어도 에러가 없다.

String 자료형
- String : 문자형

int 자료형
- int : 정수형

double 자료형
- double : 실수형, 소수점이 들어가는 숫자

bool 자료형
- bool : Boolean형(true, false)

DateTime 자료형
- DateTime : 날짜 및 시간
- DateTime.now() : 현재시간을 반환하는 함수
- DateTime형을 선언할 때 final은 사용할 수 있지만, const는 사용할 수 없다.
- DateTime.now()는 runtime때 값이 결정된다.

final과 달리 const는 실행시에 값이 결정되어 있어야 하는데, DateTime.now()는 실행시키는 시점이 아니라, 실행되는 중간에 값이 결정되기 때문에 아래처럼 에러 발생, 주의 필요

컬렉션 자료형
- 컬렉션은 여러 값을 하나의 변수에 저장할 수 있는 타입
- List : 여러값을 순서대로 저장
- Map : 특정 키값을 기반으로 빠르게 값을 검색
- Set : 중복된 데이터 제가할 때 사용
- 컬렉션 타입은 서로의 타입으로 자유롭게 형변환이 가능하다는 매우 큰 장점이 있다.
변수 선언 방법
- 일반적 선언방법
- 자료형 변수명 = 값;

nullable / non-nullable
- nullable : null값이 포함될 수 있는 자료형
- non-nullable : null값이 포함될 수 없는 자료형
- 모든 자료형은 기본적으로 non-nullable이다. 아래 예를보면 name변수에 null값을 지정시 에러 발생

- ? : non-nullable → nullable 전환 : 자료형 선언시 “?”를 붙이면 된다.
- 아래 예와 같이 name변수 선언시 자료형 끝에 “?”를 붙여주면 name변수에 Null을 입력해도 에러가 나지 않는다.

- ! : nullable → non-nullable 지정(명시)
- nullable 변수이더라도, 중간에 “!”를 붙여주면 Null 입력 못하게 지정
- 아래와 같이 nullable 변수 name을 name!으로 print해보면 현재 null값이 들어 있어 에러 발생

final / const
- 공통점 : 값을 한번 선언하면 더이상 변경할 수 없다.

- 변수형을 생략할 수 있어 var의 역할까지 한다.

- 차이점 : final은 빌드타임에 값을 몰라도 된다.
const는 빌드타임에 값을 알아야 한다.

- DateTime : 날짜형, final은 선언시에 명확한 값을 몰라도 사용가능, 위 예제에서 DateTime.now()는 런타임시에 생성되므로 값이 지정되지 않았으나 final 사용 가능,
- const는 데이터 선언시에 값이 명확해야되므로, DateTime.now()사용 불가
String내에서 변수사용 : ${변수}
- Python의 fstring과 비슷
- 사용하는 방법 : ${변수}, ${변수.함수}, $변수
- 변수에 dot(.)을 사용하려면 {} 중괄호를 반드시 써야 한다.
- dot(.)을 이용하지 않으면 중괄호 생략 가능하다.

Share article