Flutter开发-Dart语言基础-2
接着上篇Dart语言基础.
运算符
Dart和其他语言一样多种,支持多种运算.
点运算语法糖
点运算和Swift中的使用类似,对象点属性相当于调用属性的getter方法,对象点方法表示调用此方法.
算术运算
算术运算是一些基础运算方式:加减乘除,取余,取模等,还有自增自减运算.
int a = 10;
int b = a++;
int c = ++a;
print("a=$a,b=$b,c=$c");
I/flutter (27692): a=12,b=10,c=12
这里说一下,++在前,表示先自增再赋值运算;++在后,表示先赋值运算再自增.
关系运算符
关系运算符一般用来判断对象之间的关系,比如相等==,不相等!=,大于小于等.
int a = 10;
int b = a++;
int c = ++a;
print("a=$a,b=$b,c=$c");
print(" a > c ? ${a > c}");
I/flutter (27692): a > c ? false
逻辑运算符
逻辑运算就是与或非(&&,||,!).
int a = 10;
int b = a++
int c = ++a;
print("a=$a,b=$b,c=$c");
print(" a > c ? ${a > c}");
print("a >= c && a > b ? ${a >= c && a > b}");
I/flutter (27692): a=12,b=10,c=12
I/flutter (27692): a > c ? false
I/flutter (27692): a >= c && a > b ? true
位运算符
位运算符常用来操作对象的Bit进行操作:按位与&,按位或|,按位异或^,按位取反~,向左移<<,向右移>>.
int d = 8;
int e = (d << 1);
print("e = $e");
I/flutter (27692): e = 16
条件表达式
条件表达式有三目运算和双目运算,和其他语言一样.
// 三目表达式
int f = a > c ? 13 : 14;
print("f = $f");
// 双目表达式
int m = a ?? 18;
print("m = $m");
I/flutter (27692): f = 14
I/flutter (27692): m = 12
类型转换验证运算符
Dart中可以将一个对象强制转换为另一个对象(这个对象可以是自身,也可以为其他),操作符为as.一般用来强转为自身类的实例,转为其他类型编译期不会报错,但是运行期会报错,抛异常.
int a = 10;
double q = (a as double);
print("q = $q");
as error
类型验证运算-is就是判断某个对象是否是某个类的实例,和Swift中的内省方法isClassOf功能类似,如果要取反判断直接在is后面加!也就是is!:
print("student is Student ? ${student is Student}");
I/flutter (27692): student is Student ? true
print("student is Student ? ${student is! Student}");
级联操作
级联操作表示的是一个对象可以连续操作,这个思想一般可以用来链式编程.
Person.init(1.8,20)
..getAge()
..getHeight();
I/flutter (27692): age is:20
I/flutter (27692): height is:1.8
流程控制语句
流程控制语句目标是控制程序执行的逻辑流程.
if和esle条件流程控制
if ("flutter" is String) {
print("yes");
} else if ("flutter" is int) {
print("int");
} else {
print("no");
}
遍历
Dart中遍历一个集合可以通过for循环或者while以及do while
// for
for (var i = 0; i < 12; i++) {
print("i = $i");
}
// for in
List list_m = [1,2,3,3];
for (var value in list_m) {
print("value = $value");
}
do while 和whlie区别在于do先执行一次循环然后再判断是都继续执行,while循环是先判断条件然后执行循环.
在执行循环的过程中可以通过循环控制语句来终止或者跳过本次循环,分别是break和continue.
Switch语句
Switch语句是多条件判断的特殊情况,这里和Swift语法几乎一样.
switch (a) {
case 1:
print(1);
break;
case 2:
print(2);
break;
case 3:
print(3);
break;
default:
print(12);
}
断言
断言是验证程序是否满足条件的一种方式,如果不满足设定的条件直接中断运行.
int a = 10;
int b = a++;
int c = ++a;
// 断言
assert(a> c);
因为a不大于c,程序抛异常,停止运行.
assert
异常捕获
异常即非正常,在执行某段代码时如果程序发生错误,我们能够预知可能发生的错误,然后将错误捕获处理,防止程序终止.Dart中的异常和Objective-C中的几乎一样.
try {
person.getAge();
} catch (e) {
print("e:$e");
} finally {
print("finish do");
}