一、运算符
Dart中,运算符主要有
算术运算符、关系运算符、逻辑运算符、赋值运算符。
1.算数运算符(+ 、 -、 *、 /、 ~/ (取整)、 %(取余))
void main() {
/*算数运算符*/
int a = 10;
int b = 3;
print(a + b); //加
print(a - b); //减
print(a * b); //乘
print(a / b); //除
print(a % b); //其余
print(a ~/ b); //取整
}
2.关系运算符(== 、!= 、> 、< 、>= 、<=)
/*关系运算符*/
int a = 4;
int b = 6;
print(a == b); //判断是否相等 false
print(a != b); //判断是否不等 true
print(a > b); //判断是否大于 false
print(a < b); //判断是否小于 true
print(a >= b); //判断是否大于等于 false
print(a <= b); //判断是否小于等于 true
3.逻辑运算符(! 、&& 、|| )
/*逻辑运算符*/
// ! (取反)
var bool = false;
print(!bool); //true
//&& (并且) 全部为true时值为true 否则值为false
var a = true;
var b = true;
print(a && b); //true
//|| (或者) 全为false的话值为false ,任一为true时值为true
var c = true;
var d = false;
print(c || d); //true
4.赋值运算符(=、??=、+= 、 -=、*=、/=、 ~/=、%=、++、--)
/*赋值运算符*/
// =
int a = 1;
int b = 2;
int c = a + b; //从右向左计算
print(c); //3
//??=
var d;
d ??= 5;
print(d);
//+= -= *= /= %= ~/=
var e = 4.0;
e += 5; //等同于 e=e+5
e -= 5; //等同于 e=e-5
e *= 5; //等同于 e=e*5
e /= 1; //等同于 e=e/5
//....
// ++(自增) 、--(自减)
//如果++ -- 写在前面 这时候先运算 再赋值,如果++ --写在后面 先赋值后运行运算
var f = 5;
f++;
print(f); //5+1 = 6
f--;
print(f); //6-1 = 5
++f;
print(f); //6
--f;
print(f); //5
var g = f++; //先赋值后运算
print(g); //5
print(f); //6
var h = ++f; //先运算再赋值
print(h); //6
print(f); //6
二、条件表达式
1.if...else...和switch...case...
/*条件表达式*/
var age = 18;
// if...else...的写法
if (age > 18) {
print('已成年');
} else if (age == 18) {
print('刚成年');
} else {
print('未成年');
}
//switch...case...的写法
switch (age) {
case 19:
print('已成年');
break;
case 17:
print('未成年');
break;
default:
print('刚成年');
break;
}
2.三元运算符
//三元运算符的写法
print(age > 18? '已成年':age < 18? '未成年':'刚成年');
3.??运算符
//??运算符的写法
var a = 1;
var b = a ?? 2;
print(b); //如果a有值时,b=a,打印为1
var a;
var b = a ?? 2;
print(b); //如果a无值时,b=2,打印为2
三、类型转换
1、Number与String类型之间的转换
// Number类型转换成String类型 toString()
int a = 10;
var b = a.toString();
print(b is String); //true
// String类型转成Number类型 int.parse()
String c = '10.0';
var d = int.parse(c);
print(d is int); //true
//注:String c = '10.0'为浮点数时,会发生报错,为例避免这样的报错,建议用以下写法:
String c = '10';
var d = double.parse(c);
print(d is double); //true
2.其他类型转换成Booleans类型
// isEmpty:判断字符串是否为空
var name = '';
if (name.isEmpty) {
print('name为空');
} else {
print('name不为空');
}
var age = 18;
if (age == 0) {
print('0');
} else {
print('非0');
}
var num1;
if (num1 == 0) {
print('0');
} else {
print('非0');
}
var num2;
if (num2 == null) {
print('空');
} else {
print('非空');
}
var num3 = 0 / 0;
print(num3);
if (num3.isNaN) {
print('NaN');
}
四、循环语句
1.三种循环方法
以依次打印1-10数字为例,如下三种循环方法:
main() {
/**for循环 */
for (var i = 1; i <= 10; i++) {
print(i);
}
/**while循环 */
int i = 1;
while (i <= 10) {
print(i);
i++; //不写i++会出现死循环
}
/** do while循环 */
int i = 1;
do {
print(i);
i++;
} while (i <= 10);
}
2.break和continue功能
break语句功能:
1、在switch语句中使流程跳出switch结构。
2、在循环语句中使流程跳出当前循环,遇到break 循环终止,后面代码也不会执行
强调:
1、如果在循环中已经执行了break语句,就不会执行循环体中位于break后的语句。
2、在多层循环中,一个break语句只能向外跳出一层
break可以用在switch case中 也可以用在 for 循环和 while循环中
continue语句的功能:
【注】只能在循环语句中使用,使本次循环结束,即跳过循环体下面尚未执行的语句,接着进行下次的是否执行循环的判断。
continue可以用在for循环以及 while循环中,但是不建议用在while循环中,不小心容易死循环。