var,const,final
var定义一个任意类型的变量,可以赋任何类型的值。
var a = 10;
a = 'hello world!';
a = true;
final定义只能赋一次值的常量。
final a = 10;
a = 2; //出错
final不要求一定要在定义的时候初始化。
final a;
a = 10; //正确
const定义一个常量,必须在定义时初始化,并且之后不能改变它的值。
const a; //错误,没有初始化
const a = 10;
a = 5; //错误
注:
const表示编译时常量,即在代码还没有运行时我们就知道它声明变量的值是什么;而final不仅有const的编译时常量的特性,最重要的它是运行时常量,并且final是惰性初始化,即在运行时第一次使用前才初始化。
数值型Number
Dart中整形int,浮点型double都是num的子类,num可以存储整数或者浮点类型的数值,而使用int和double明确定义数值类型之后就不能赋值其他类型的数值了。
num a = 10;
a = 10.5; //正确
int b = 5;
b = 5.5; //错误
double c = 5.5;
c = 5; //错误
注:
关于数值类型的运算符,Dart与Java有不同的地方为/
运算符,在Dart中运算出来的结果会有浮点型数据,而且运算符~/
才是取整的除法。
字符串String
可以使用'
,"
定义字符串,同时可以使用三个单引号和三个双引号表示多行字符串。
String a = "hi";
String b = 'hi';
String c = '''hello
world''';
String d = """hello
world""";
在字符串中可以使用转意字符,使用r
可以定义原始字符串。
String a = "hello \n world!" //输出为hello
world
String b = r "hello \n world!"; /输出为hello \n world!
运算符*
,+
,[]
,==
+
:与Java相同。*
:表示字符串重复次数。[]
:取得某一个字符,下标从0开始。==
:判断两个字符串内容是否相同。
插值表达式${}
,单个字符可以省去大括号。
int a = 1;
int b = 2;
print("a+b=${a + b}"); //输出a+b=3
print("a = $a"); //输出a=1;
布尔型
使用bool声明,值只有true或false。
List
定义List:
List a = new List(); //非固定长度,可以存储任意类型的数据。
List<int> a = new List(); //非固定长度,只能存储int的数据。
List<int> a = new List(3); //固定长度为3,只能存储int的数据。
List采用操作:
- [] ,length 获取元素,和数组长度
- add(), insert ()添加元素
- remove(),clear() 删除元素
- indexOf (), lastIndexOf () 获取元素中的位置
- sort (), sublist () 排序和获取子数组
- shuffle(), asMap(), forEach() 打乱, 转换为Map ,排序
Map
定义Map:
Map map1 = {'aa':'aaa','bb':22,'cc':true};//直接赋初始值
Map map2 = new Map(); //定义一个Map,其key与value都可以为任意值。
Map<int,String> map3 = new Map(); //定义一个Map,key为int,value为String。
Map<String,int> map5 = {"a":1,"b":2}; //定义一个Map,key为String,value为int,且初始化。
常见操作:
[]
:Map[key]取的对应key的值;Map[key] = value如果key存在为修改操作,不存在则为创建操作- update() 对指定的key的value做出修改
- updateAll() 根据参数函数的规则,批量修改map
- remove() 删除一个key
- removeWhere() 根据条件批量删除
- containsKey() 是否包含key
- containsValue() 是否包含value值
- forEach() 遍历
- clear() 清空map
- addAll() 整体合并另一个map 泛型要一致
- addEntries() 合并两个map 如果key有重复,被合并的map的value覆盖前者
- putIfAbsent() 存在key就获取值,不存在则添加到map 然后返回值
Dynamic
dynamic定义的变量可以储存任意类型的值。
dynamic a = 10;
a = "hello";
a = false;