Dart 的运算符,从高到低按照优先级排列:
一、算术运算符
var add = a + b; print('a和b的“加法”运算结果:(a + b) = ${add}');
var subtraction = a - b;
print('a和b的“减法”运算结果:(a - b) = ${subtraction}');
var multiplication = a * b;
print('a和b的“减法”运算结果:(a / b) = ${multiplication}');
var division = b / a;
print('a和b的“减法”运算结果:(a / b) = ${division}');
var footer = 5 ~/ 2;
print('a和b的“除法”运算,商是:(a ~/ b) = ${footer}');
var mod = 5 % 2;
print('a和b的“除法”运算,余数是:(a % b) = ${mod}');
a = ++a;
print('a执行++a后的结果是:(++a) = ${a}');
a = a++;
print('a执行a++后的结果是:(a++) = ${a}');
a = --a;
print('a执行--a后的结果是:(--a) = ${a}');
a = a--;
print('a执行a--后的结果是:(a--) = ${a}');
运行结果如下:
二、比较运算符:
var a = 2; var b = 3;
var compare = (a <= b);
print('a和b的“比较”运算结果:(a < b) = ${compare}');
compare = (a >= b);
print('a和b的“比较”运算结果:(a > b) = ${compare}');
compare = a != b;
print('a和b的“比较”运算结果:(a != b) = ${compare}');
compare = a == b;
print('a和b的“比较”运算结果:(a == b) = ${compare}');
运行结果如下:
三、类型检查运算符
使用 as ,is 和 is !运算符可以方便地在运行时检查类型。
var str = "haoyue";
if(str is String){
print("str是一个字符串类型的变量");
}
运行结果如下:
四、赋值运算符
复合赋值运算符包含以下符号:
复合赋值运算符的工作原理:
五、逻辑运算符
var bobo = true;
bool boo = false;
if(bobo && boo){
print("&&与逻辑运算符是要诸多条件同时为true真才能执行");
}else{
print("&&逻辑运算符只要其中一个条件为假false,那么就会执行else分支");
}
if(bobo || boo){
print("||或逻辑运算符只要是诸多条件中有一个为true就会执行");
}else{
print("||逻辑运算符除非是诸多条件中全部为假,才会执行else分支");
}
if(!boo){
print("!非逻辑运算符,取非后条件为真,就会执行if语句");
}else{
print("!非逻辑运算符,取非后条件为假,就会执行else");
}
执行结果如下:
六、按位运算符合移位运算符
七、三目运算——条件表达式
条件表达式可以用来简化 if-else语句。
condition ? expr1 : expr2:如果condition为true,执行expr1;否则执行expr2。
expr1 ?? expr2:如果expr1为非null,则返回其值; 否则,计算并返回expr2的值。
八、级联运算符
级联运算符( …),允许您对同一对象进行多项操作。
querySelector('#confirm') // 获取html元素对象
..text = 'Confirm' // 访问成员
..classes.add('important') // 添加样式
..onClick.listen((e) => window.alert('Confirmed!')); // 监听事件
//上面的代码等同于:
var button = querySelector('#confirm');
button.text = 'Confirm';
button.classes.add('important');
button.onClick.listen((e) => window.alert('Confirmed!'));
级联嵌套:
final addressBook = (AddressBookBuilder()
..name = 'jenny'
..email = 'jenny@example.com'
..phone = (PhoneNumberBuilder()
..number = '415-555-0100'
..label = 'home')
..build())
.build();