1、基础赋值运算符 =
将右侧表达式的值存入左侧变量,覆盖原有值。
用法:
变量 = 值或表达式;
int age;
age = 10; // 把 10 赋值给age
String name;
name= "sam"; // 字符串赋值Code language: JavaScript (javascript)
2、空感知赋值运算符 ??=
仅当左侧变量值为 null 时,才执行赋值;变量不为 null 则保持原值不变。
用法:
变量 ??= 值;
相当于:
if (变量 == null) {
变量 = 值;
}Code language: JavaScript (javascript)
例子:
void main() {
int? total = null;
total ??= 5;
print(total); // 输出 5,total原本为null,赋值生效
int? count = 100;
count ??= 200;
print(count); // 输出 100,count不为null,赋值不生效
}Code language: PHP (php)
3、复合赋值运算符
运算 + 赋值一体
对于任意运算符 op
a op= b 等价于 a = a op b
| 分类 | 运算符 | 含义 |
|---|---|---|
| 基础四则 | += | 相加后赋值 |
-= | 相减后赋值 | |
*= | 相乘后赋值 | |
/= | 相除(浮点)后赋值 | |
| 整除 | ~/= | 整除后赋值(取整数) |
| 取余 | %= | 取模(余数)后赋值 |
| 位左移 | <<= | 左移后赋值 |
| 位右移 | >>= | 右移后赋值 |
| 无符号右移 | >>>= | 无符号右移后赋值 |
| 按位与 | &= | 按位与后赋值 |
| 按位异或 | ^= | 按位异或后赋值 |
| 按位或 | =` | 按位或后赋值 |
| 对于算符操作: | a op= b | a = a op b |
| 示例: | a += b | a = a + b |
例子:
void main() {
var num = 2;
// *= 乘法复合赋值
num *= 3;
print(num); // 6,等价 num = num * 3
// += 加法
num += 4;
print(num); // 10,等价 num = num + 4
// -= 减法
num -= 2;
print(num); // 8
// /= 浮点除法
double d = 10;
d /= 2;
print(d); // 5.0
// ~/= 整数整除
int n = 7;
n ~/= 2;
print(n); // 3
// %= 取余
int m = 9;
m %= 2;
print(m); // 1
// <<= 左移
int bit1 = 1;
bit1 <<= 2; // 1 << 2 = 4
print(bit1); // 4
// >>= 右移
int bit2 = 8;
bit2 >>= 2; // 8 >> 2 = 2
print(bit2); // 2
// >>>= 无符号右移
int bit3 = -8;
bit3 >>>= 2;
print(bit3); //4611686018427387902 很大的一个数
// &= 按位与
int x = 6; // 110
x &= 3; // 011
print(x); // 010 = 2
// ^= 异或
int y = 5;
y ^= 3;
print(y);
// |= 按位或
int z = 4;
z |= 1;
print(z); // 5
}Code language: PHP (php)
关于,移位,int bit1 = 1; 左移2位,
十进制 1 的 32 位二进制:
00000000 00000000 00000000 00000001
x << n:把 x 的所有二进制位整体向左移动 n 位,右侧空出来的低位补 0,左侧超出的高位直接丢弃。
所以上面,变成了:
00000000 00000000 00000000 00000100
这个二进制就是对应十进制的4
关于逻辑运算符,我们后面会讲解,读者暂且知道这个赋值运算符就可以。这是本节课的重点。
void main() {
// 1. 基础赋值 =
var a = 2;
print(a == 2);
// 2. 乘法复合赋值 *=
a *= 3; // a = a * 3;
print(a == 6);
// 3. 加法复合赋值 +=
a += 4; // a = a + 4;
print(a == 10);
// 4. 空感知赋值 ??=
int? b; // 默认null
b ??= 20;
print(b == 20);
b ??= 99; // b不为null,不修改
print(b == 20);
// 5. 减法 -=
a -= 5;
print(a == 5);
// 6. 取余 %=
a %= 3;
print(a == 2);
}Code language: Dart (dart)
以上 全部输出true
Previous: Dart 类型测试运算符
Next: Dart 逻辑运算符