Dart의 데이터 타입은 모두 class로 이루어져 있어서 데이터 타입에 따라 Method를 자유롭게 사용할 수 있다.
문자열 타입.
void main(){
String a = "hello";
}
정수 타입.
소수점 불가능
void main(){
int a = 123;
}
실수 타입.
void main(){
double a = 1.125424;
}
int와 double 클래스를 살펴보면 둘 다 num을 참조하고 있다는 사실을 알 수 있다.
num은 int와 double의 부모 class로 int와 double 값을 모두 가질 수 있으나 잘 사용하지 않는다.
void main(){
num a = 12;
a = 12.3232;
}
논리 타입.
void main(){
boolean a = true;
a = false;
a = !a;
}
리스트 형식으로 값을 담는다.
void main(){
List<int> numbers = [1, 2, 3, 4];
}
List<타입> 리스트 = [값, 값] 또는 var 리스트 = [값, 값] 으로 선언하며
여러타입을 넣고 싶다면 object 타입을 넣으면 된다.
리스트의 마지막 값에도 ,를 넣으면 dart가 알아서 정렬을 해준다.
void main(){
List<int> a = [1, 2, 3, 4]; // 정렬 안됨
List<int> b = [
1,
2,
3,
4,
];
}
collection if 라는 기능으로 조건문으로 list에 값을 넣을 수 있다.
void main(){
boolean chk = true;
List<int> a = [
1,
2,
3,
4,
if(chk) 5,
];
print(a); // [1, 2, 3, 4, 5];
boolean chk = true;
List<int> b = [
1,
2,
3,
4,
chk ? 6 : 5,
];
print(b); // [1, 2, 3, 4, 6]; // 삼항 연산자도 잘 적용된다.
}
collection for 라는 기능으로 list 재가공도 간편하게 할 수 있다.
void main(){
List<int> a = [1, 2, 3, 4]; // 정렬 안됨
List<int> b = [
1,
2,
3,
4,
for(var num in a) a
];
print(b); // [1, 2, 3, 4, 1, 2, 3, 4]
}
String Interpolation 라는 기능을 사용하여 문자열 사이에 변수를 넣을 수 있다.
$+변수으로 넣으면 된다.
${변수} 구조로 변수를 재가공할 수도 있다.
void main(){
String name = "jinjin";
print("hello! my name is $name"); // hello! my name is jinjin
int num = 1;
print("one plus one equals ${num+1}"); // one plus one equals 2
}
key와 value로 이루어진 타입.
void main(){
Map<int, boolean> temp = {1: true, 2: false};
}
List와 구조는 동일하지만 Set의 값들은 유니크하다.
void main(){
Set<int> temp = {1, 2, 3};
temp.add(1);
temp.add(2);
print(temp); // 1, 2, 3, 1, 2가 아닌 1, 2, 3이 출력된다.
}