第三章:ArkTS 运算符详解

在 ArkTS 中,运算符是构建表达式和执行计算的关键元素。以下是对各种运算符的详细介绍,并附带案例演示。

 

一、赋值运算符

(一)基本赋值运算符(=)

基本赋值运算符 “=” 用于将右侧的值赋给左侧的变量。例如:

let x: number;
let y = 5;
x = y;
console.log(x); // 输出 5

(二)复合赋值运算符

复合赋值运算符将赋值与其他运算符组合在一起。形式为 “x + = y” 等同于 “x = x + y”。以下是复合赋值运算符的介绍:

  1. +=
let a = 3;
a += 2; // 等同于 a = a + 2
console.log(a); // 输出 5
  1. -=
let b = 7;
b -= 3; // 等同于 b = b - 3
console.log(b); // 输出 4
  1. *=
let c = 2;
c *= 4; // 等同于 c = c * 4
console.log(c); // 输出 8
  1. /=
let d = 10;
d /= 2; // 等同于 d = d / 2
console.log(d); // 输出 5
  1. %=
let e = 11;
e %= 3; // 等同于 e = e % 3
console.log(e); // 输出 2
  1. <<=、>>=、>>>=、&=、|=、^=(位运算相关复合赋值运算符,下面位运算符部分详细介绍用法)

二、比较运算符

(一)严格相等运算符(===)

严格相等运算符 “===” 只有当两个操作数类型相同且值相等时才返回 true,不同类型的操作数被认为是不相等的。例如:

console.log(5 === 5); // 输出 true
console.log(5 === '5'); // 输出 false,因为类型不同

(二)严格不相等运算符(!==)

严格不相等运算符 “!==” 当两个操作数类型不同或者值不相等时返回 true。例如:

console.log(5!== '5'); // 输出 true
console.log(5!== 5); // 输出 false

(三)相等运算符(==)

相等运算符 “==” 在比较时会进行类型转换,如果转换后的值相等则返回 true。不过在实际编程中,更推荐使用 “===”,因为 “==” 可能会导致一些不易察觉的类型转换问题。例如:

console.log(5 == '5'); // 输出 true,这里会将字符串 '5' 转换为数字 5 后比较

(四)不相等运算符(!=)

不相等运算符 “!=” 与 “==” 相反,如果转换后的值不相等则返回 true。例如:

console.log(5!= 6); // 输出 true

(五)大于(>)、大于等于(>=)、小于(<)、小于等于(<=)运算符

这些运算符用于比较两个操作数的大小关系。例如:

console.log(7 > 3); // 输出 true
console.log(7 >= 7); // 输出 true
console.log(3 < 7); // 输出 true
console.log(3 <= 3); // 输出 true

三、算术运算符

(一)一元运算符

  1. 负号(-)和正号(+)
    • 负号用于改变操作数的符号,正号一般不改变操作数的值,但在某些情况下用于强调操作数是正数。例如:
let num = 5;
console.log(-num); // 输出 -5
console.log(+num); // 输出 5
  1. 自增(++)和自减(--)运算符
    • 自增和自减运算符有前置和后置两种形式。前置形式(++x、--x)先对变量进行自增或自减操作,然后返回新的值;后置形式(x++、x--)先返回变量的当前值,然后再对变量进行自增或自减操作。例如:
let i = 3;
console.log(++i); // 输出 4,i 的值现在是 4
let j = 3;
console.log(j++); // 输出 3,j 的值现在是 4

(二)二元运算符

  1. 加法(+)
console.log(2 + 3); // 输出 5
let str = 'Hello, ';
console.log(str + 'world'); // 输出 Hello, world,字符串拼接
  1. 减法(-)
console.log(5 - 3); // 输出 2
  1. 乘法(*)
console.log(4 * 3); // 输出 12
  1. 除法(/)
console.log(10 / 2); // 输出 5
  1. 取余(%)
console.log(11 % 3); // 输出 2

四、位运算符

(一)按位与(&)

按位与运算符 “a & b”,如果两个操作数的对应位都为 1,则将这个位设置为 1,否则设置为 0。例如:

let num1 = 5; // 二进制为 0101
let num2 = 3; // 二进制为 0011
console.log(num1 & num2); // 输出 1,因为 0101 & 0011 = 0001

(二)按位或(|)

按位或运算符 “a | b”,如果两个操作数的相应位中至少有一个为 1,则将这个位设置为 1,否则设置为 0。例如:

let num3 = 5; // 二进制为 0101
let num4 = 3; // 二进制为 0011
console.log(num3 | num4); // 输出 7,因为 0101 | 0011 = 0111

(三)按位异或(^)

按位异或运算符 “a ^ b”,如果两个操作数的对应位不同,则将这个位设置为 1,否则设置为 0。例如:

let num5 = 5; // 二进制为 0101
let num6 = 3; // 二进制为 0011
console.log(num5 ^ num6); // 输出 6,因为 0101 ^ 0011 = 0110

(四)按位非(~)

按位非运算符 “~ a” 反转操作数的位。例如:

let num7 = 5; // 二进制为 0101
console.log(~num7); // 输出 -6,~0101(补码形式)= 1010(原码为 -6)

(五)左移(<<)

左移运算符 “a << b” 将 a 的二进制表示向左移 b 位,右边补 0。例如:

let num8 = 1; // 二进制为 0001
console.log(num8 << 2); // 输出 4,因为 0001 << 2 = 0100

(六)算术右移(>>)

算术右移运算符 “a>> b” 将 a 的二进制表示向右移 b 位,带符号扩展。例如:

let num9 = -8; // 二进制为 11111000(补码形式)
console.log(num9 >> 2); // 输出 -2,因为 11111000 >> 2 = 11111110(补码形式,原码为 -2)

(七)逻辑右移(>>>)

逻辑右移运算符 “a>>> b” 将 a 的二进制表示向右移 b 位,左边补 0。例如:

let num10 = -8; // 二进制为 11111000(补码形式)
console.log(num10 >>> 2); // 输出 1073741822,因为 11111000 >>> 2 = 00111110(无符号数)

五、逻辑运算符

(一)逻辑与(&&)

逻辑与运算符 “a && b”,当 a 和 b 都为 true 时返回 true,只要有一个为 false 则返回 false。并且,当计算到 a 为 false 时,不会再计算 b。例如:

let bool1 = true;
let bool2 = false;
console.log(bool1 && bool2); // 输出 false
console.log((3 > 5) && (5 > 3)); // 输出 false,只计算了 3 > 5 就得出结果

(二)逻辑或(||)

逻辑或运算符 “a || b”,当 a 和 b 至少有一个为 true 时返回 true,只有当 a 和 b 都为 false 时才返回 false。并且,当计算到 a 为 true 时,不会再计算 b。例如:

let bool3 = true;
let bool4 = false;
console.log(bool3 || bool4); // 输出 true
console.log((3 > 2) || (5 > 7)); // 输出 true,只计算了 3 > 2 就得出结果

(三)逻辑非(!)

逻辑非运算符 “! a” 用于对操作数取反,当 a 为 true 时返回 false,当 a 为 false 时返回 true。例如:

let bool5 = true;
console.log(!bool5); // 输出 false

通过对这些运算符的详细了解和案例演示,我们可以在 ArkTS 编程中更灵活地处理数据和实现各种逻辑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值