var赋值后变量类型就确定,不能赋值成其他类型
Object类型可以赋值任意类型,只能调用自身设置的方法、属性
dynamic动态类型,和Object类似,不同之处在于可以调用不属于自己的方法、属性,但运行时才会报错
final声明常量,不能再赋值,在使用时才会初始化
const声明常量,不能再赋值,在编译时已经存在
int 数值变量.clamp(最小值,最大值); 当数值大于最大值或小于最小值,会取设定的边界值
double
bool
String 使用+来字符串拼接,但只能拼接字符串,不能拼接其他类型
List数组 支持forEach((item,index){})
(1)=new List<String>()/new List<String>()
(2)=[1,2,3]
(3)..进行连续操作,如:list..add(x)..add(x)..add(x); ..操作符会返回自身
Map类型 和js对象类型相同,但键必须用引号包裹
(1)={"x":xx,"xxx":xxxx}
(2)var x=new Map(); x['xx']=xxx
Set类型 元素不重复,非数组,不能通过索引取值
(1)Set s={x,x,x};
(2)var x=new Set(); x.add(xx);
(3)利用Set去重
var x=new Set();
x.addAll(数组); 再通过toList()转换成数组
判断数据类型:
==会先判断类型,不同false
x is 数据类型; 来判断
if( str is String){...}
方法:
类型.parse(值); 非字符串类型的转换方法
数值.toString(); 转换成字符串类型
数值.toStringAsFixed(n); 转换成字符串类型且保留指定小数点位数,会四舍五入
List数组:
属性
.length
.reversed 翻转成"(x,x,x)"形式的字符串,后接toList()可转换成数组
.isEmpty 是否为空
.first/.last 获取首/尾元素
方法
.add(x)往数组末尾添加元素
.addAll([x,x]) 往数组末尾添加数组
.indexOf(值) 查找元素索引
.remove(值)
.removeAt(索引)
.fillRange(开始索引,结束索引,修改值); 区间为[ ),将范围内的元素修改成指定值
.insert(index,value)
.insert(index,List) 指定位置插入数组
.toList() 其他类型转换成数组
.join('x'); 按格式拼接成字符串
.splite('x') 分割成数组
.where((x){return ...}); 过滤器,参数x是数组的每一个内容,返回判断条件为真的x,返回形式为(x,xx); 可通过toList()转换成字符串
Map对象:
属性:
.keys 返回"(x,x,..)" 形式的所有键
.values 返回"(x,x,..)" 形式的所有值
.isEmpty
方法:
.remove(key)
.addAll({'x':xx,...}) 合并两个对象
.containsKey(x)
.containsValue(x)
代码示例:
void main() {
//var赋值后变量类型就确定,不能赋值成其他类型
var str='好帅';
//Object类型可以赋值任意类型,只能调用自身设置的方法、属性
Object obj=123;
obj='123';
//dynamic动态类型,和Object类似,不同之处在于可以调用不属于自己的方法、属性,运行时才会报错
dynamic d='123';
//final声明常量,不能再赋值,在使用时才会初始化
final f='good';
//const声明常量,不能再赋值,在编译时已经存在
const c='good';
}