常用数据类型:
Numbers: int double
Strings: String
Booleans:bool
List数组
Maps字典
不常用:
Runes是UTF-32编码的字符串,可以通过文字转换成符号表情或者代表特定的文字
Symbols dart程序中声明的运算符或者标志符号,不常用
定义各种类型变量:
int a = 2;
double b = 2.3;
String c = 'aabb';
String d = 'bbcc';
print('''a
b
c''');
print(c+''+d);
var a = 123;
var b= 324;
var c = false;
bool d = true;
if(a == b)
定义list 1 不指定类型
List lll = ["张三",23,true];
print(lll);
print(lll.length);
print(lll[0]);
print(lll[1]);
定义list 2 指定类型
var lll2 = <String>["aaa","123","李五"];
定义list 3 增加数据
var lll3 = [];
lll3.add("张三");
lll3.add(222);
lll3.add(true);
定义list 4 固定长度,长度固定 初始化后不能修改长度,上面的方式创建的list长度是可以变得
var lll5 = List.filled(6, "");//创建固定长度list
lll5[0] = "张三";
lll5.add("lisi");//固定长度不能添加,错误写法
var lll5 = List<String>.filled(6, "");//创建固定长度list,指定类型
修改从第a个到第b-1个的值:
lll3.fillRange(a, b,"aaa");把第二个修改为aaa
插入
lll3.insert(1,"aaa");在第一个之前插入
lll3.insertAll(1,["aaa","bbb"]);
遍历list
for(var item in lll3){
print(item);
}
list.forEach((value){
print("$value");
});
修改list数据
var newList = list.map((value){
return value*2;//每项值乘以2
});
List查找数据
var newList = list.where((value){
return value>2;//找出大于2的值
});
var newList = list.any((value){
return value>2;//有大于2的就返回true
});
var newList = list.every((value){
return value>2;//都大于2的就返回true
});
List转字符串
var str = list.join("-");拼接
Map创建
var person={
"name":"张三",
"age":12
};
print(person["name"]);
print(person["age"]);
var p = new Map();
p["name"] = "lisi";
p["age"] = 12;
p["work"] = ["程序员","送外卖","炒股"];
print(p["work"]);
List s = p.keys.toList();
List s = p.values.toList();
if(p.isEmpty)
if(p.isNotEmpty)
if(p.containsValue("lisi"))
Set创建(不能存放相同值)
var s = new Set();
s.add("aaa");
s.add("bbb");===>{aaa,bbb}
s.toList();===>[aaa,bbb]
数组去重:
List list = ["aaa","aaa","bbb","bbb","aaa"];
set.addAll(list);
s==>{aaa,bbb}
判断类型
var str = "1234";
if(str is String)
??= 表示如果b为空,则赋值
var b = 12;
b ??=10;
print(b); 打印出12
相比于java 增加了
~/取整
??
var a = 12;
var b = a ?? 10;如果a为空,则把10赋值给b,a不为空,则把a赋值给b
自执行方法:
((){
})();
递归:
int sum = 0;
fn(int n){
sum+=n;
if(n >0){
f(n-1);
}
}
闭包:
函数嵌套函数,并且返回里面的方法
fn(){
var a = 123;
return (){
a++;
print(a);
}
}
var b = fn();
b();
b();
b();
print==>124 125 126
对象操作符:
? 条件运算符
as 类型转换
is 类型判断
.. 级联操作(连缀)
var p = new Person();
(p as Person).printInfo();类型转换
p.name = "zhangsan";
p.age = 22;
p.printInfo();
===>连缀:
p..name="zhangsan"
..age=20
..printInfo();