Dart 变量
dart 可以不预先定义变量类型,会自动类型推倒,即 dart 语言有类型校验。
dart 中定义变量可以通过 var 关键字可以通过类型来申明变量,也可以直接定义类型。如
var string1 = 'this is string1';
String string2 = 'this is string2';
int number = 123;
Dart 常量
dart 可使用 final 以及 const 修饰符定义常量。
两者都是用于定义常量,区别如下:
const: 定义时一开始就得赋值
final: 定义时可以不赋值且只能赋值一次,而final不仅具有const的编译时常量的特性,最重要的它是运行时常量,并且final是惰性初始化,即在运行时第一次使用前才初始化
const String str = "hello world!";
final time = new DateTime.now();
Dart的命名规则:
变量名称必须由数字、字母、下划线和美元符($)组成。
-
注意:标识符开头不能是数字
- 标识符不能是保留字和关键字。
变量的名字是区分大小写的如: age和Age是不同的变量。
标识符(变量名称)一定要见名思意 :变量名称建议用名词,方法名称建议用动词
Dart 数据类型
字符串类型
定义方式:
var string0 = 'string0';
String string1 = 'string1';
String string2 = "string2";
String string3 = '''可换行写的
string3''';
字符串拼接:
String str1='Hello';
String str2='world';
print("$str1 $str2"); // 利用 "$" 符号
print(str1 + str2); // 使用 "+" 进行字符串拼接
数值类型
int:整型
double:浮点型(既可以是整型也可以是浮点型)
运算符:+ - * / %
布尔类型
bool 只有true及false两种类型
条件判断语句:== 及 !=
List 集合类型
定义方式:
// 第一种
var list1 = ['str1','str2','str3'];
// 第二种
var list2 = new List();
list2.add('str1');
list2.add('str2');
list2.add('str3');
// 第三种,定义指定 List 类型的
var list3 = new List();
list3.add('str1');
常用属性:
/*
length 长度
reversed 翻转
isEmpty 是否为空
isNotEmpty 是否不为空
*/
常用方法:
/*
add 增加
addAll 拼接数组
indexOf 查找 传入具体值,查找不到返回 -1
remove 删除 传入具体值
removeAt 删除 传入索引值
fillRange 修改列表中某个值
insert(index,value); 指定位置插入
insertAll(index,list) 指定位置插入List
toList() 其他类型转换成List
join() List转换成字符串
split() 分割字符串转化成List
forEach 循环遍历
map 也是循环遍历,可修改集合内的数据,并返回一个新的集合
where 返回满足条件的 value
any 只要集合内有满足条件的value,即返回 true
every 集合内每一个元素都满足条件,才返回 true
*/
Maps 类型
是无序的键值对,定义方式:
// 第一种
var maps1 = {
'name':'name1',
'age':10,
};
print(maps1['name']);
// 第二种
var maps2 = new Map();
maps2['name'] = 'name2';
maps2['age'] = 20;
print(maps2['name']);
常用属性:
/*
keys 获取所有的key值
values 获取所有的value值
isEmpty 是否为空
isNotEmpty 是否不为空
*/
常用方法:
/*
remove(key) 删除指定key的数据
addAll({...}) 合并映射 给映射内增加属性
containsValue 查看映射内的值 返回true/false
forEach
map
where
any
every
*/
Set 类型
是没有顺序且不能重复的集合,所以不能通过索引去获取值,定义方式:
var set1 = new Set();
set1.add('seta');
set1.add('setb');
因为Set是不能重复的集合,所以Set 使用时的最主要的功能就是对数组进行去重。例:
List fruitList = ['香蕉','苹果','西瓜','香蕉','苹果','香蕉','苹果'];
var fruitSet = new Set();
fruitSet.addAll(fruitList);
print(fruitSet); // 打印结果为:{香蕉, 苹果, 西瓜}
类型判断
利用 is 关键字判断
var str = 'string';
if(str is String){
print('str 是 String 类型');
}
Dart 运算符
算数运算符
// + 加
// - 减
// * 乘
// / 除
// ~/ 取整
// % 取余
关系运算符
// == 判断是否相等
// != 判断是否不相等
// > 判断是否大于
// < 判断是否小于
// >= 判断是否大于等于
// <= 判断是否小于等于
逻辑运算符
/**
! 取反
&& 并且
|| 或
*/
赋值运算符
// 1. = 以及 ??=
var a;
a ??= 20; //表示:表示如果a为空,那么将20赋值给a
// 2. += -= *= /= %= ~/=
条件表达式
- if else
- switch case
- 三目运算符
- ?? 运算符,同赋值运算符 ??=
类型转换
String 与 Number 类型之间的转换
- String类型转成Number类型 int.parse()
- Number类型转换成String类型 toString()
Dart 循环
- for
- while
- do ... while
break :
1、在switch语句中使流程跳出switch结构。
2、在循环语句中使流程跳出当前循环,遇到break 循环终止,后面代码也不会执行
continue :
只能在循环语句中使用,使本次循环结束,即跳过循环体重下面尚未执行的语句,接着进行下次的是否执行循环的判断。
Dart 语言独特属性
可以通过给循环命名的方式,来指定停止某个循环。例:
outerloop:
for (var i = 0; i < 5; i++) {
innerloop:
for (var j = 0; j < 5; j++) {
if (j > 3 ) break ;
if (i == 2) break innerloop;
if (i == 4) break outerloop;
print("Innerloop: ${j} outerloop: ${i}");
}
}