复合赋值运算符(常用篇)(基础)

(常见)

  1. ++i (前置递增)

    • 先将变量 i 的值增加 1,然后再使用变量 i
    • 示例:
      int i = 5;
      int j = ++i; // i 先加 1 变为 6,然后 j 赋值为 6
      System.out.println("i: " + i); // 输出 6
      System.out.println("j: " + j); // 输出 6
      

  2. i++ (后置递增)

    • 先使用变量 i,然后再将变量 i 的值增加 1。
    • 示例:
      int i = 5;
      int j = i++; // j 先赋值为 5,然后 i 加 1 变为 6
      System.out.println("i: " + i); // 输出 6
      System.out.println("j: " + j); // 输出 5
      

+= (加和赋值)

意义: 将变量的当前值与指定值相加,然后将结果赋值给该变量。

示例:

int a = 5; a += 3; // 等同于 a = a + 3;
System.out.println(a); // 输出 8

-= (减和赋值)

意义: 将变量的当前值减去指定值,然后将结果赋值给该变量。

示例:

int b = 10; b -= 4; // 等同于 b = b - 4;
System.out.println(b); // 输出 6

*= (乘和赋值)

意义: 将变量的当前值与指定值相乘,然后将结果赋值给该变量。

示例:

int c = 7; c *= 2; // 等同于 c = c * 2;
System.out.println(c); // 输出 14

/= (除和赋值)

意义: 将变量的当前值除以指定值,然后将结果赋值给该变量。

示例:

int d = 20;
d /= 5; // 等同于 d = d / 5;
System.out.println(d); // 输出 4

%= (取模和赋值)

意义: 将变量的当前值与指定值进行取模运算,然后将结果赋值给该变量。

示例:

int e = 13; 
e %= 3; // 等同于 e = e % 3;
System.out.println(e); // 输出 1

(不常见)

&= (按位与和赋值)

意义: 对变量的当前值和指定值进行按位与运算,然后将结果赋值给该变量。

示例:

int f = 12; // 12 的二进制为 1100 
f &= 5; // 等同于 f = f & 5;
System.out.println(f); // 输出 4

不使用复合赋值运算符:

int f = 12; // 12 的二进制为 1100 
f = f & 5; // 5 的二进制为 0101, 1100 & 0101 = 0100 (即 4) 
System.out.println(f); // 输出 4

|= (按位或和赋值)

意义: 对变量的当前值和指定值进行按位或运算,然后将结果赋值给该变量。

示例:

int g = 12; // 12 的二进制为 1100 
g |= 5; // 等同于 g = g | 5;
System.out.println(g); // 输出 13

不使用复合赋值运算符:

int g = 12; // 12 的二进制为 1100
g = g | 5; // 5 的二进制为 0101, 1100 | 0101 = 1101 (即 13)
System.out.println(g); // 输出 13

^= (按位异或和赋值)

意义: 对变量的当前值和指定值进行按位异或运算,然后将结果赋值给该变量。

示例:

int h = 12; // 12 的二进制为 1100
h ^= 5; // 等同于 h = h ^ 5;
System.out.println(h); // 输出 9

不使用复合赋值运算符:

int h = 12; // 12 的二进制为 1100
h = h ^ 5; // 5 的二进制为 0101, 1100 ^ 0101 = 1001 (即 9)
System.out.println(h); // 输出 9

<<= (左移和赋值)

意义: 将变量的当前值按位左移指定的位数,然后将结果赋值给该变量。

示例:

int i = 3; // 3 的二进制为 0011
i <<= 2; // 等同于 i = i << 2;
System.out.println(i); // 输出 12

不使用复合赋值运算符:

int i = 3; // 3 的二进制为 0011
i = i << 2; // 左移 2 位, 0011 变为 1100 (即 12)
System.out.println(i); // 输出 12

>>= (右移和赋值)

意义: 将变量的当前值按位右移指定的位数,然后将结果赋值给该变量。

示例:

int j = 12; // 12 的二进制为 1100
j >>= 2; // 等同于 j = j >> 2;
System.out.println(j); // 输出 3

不使用复合赋值运算符:

int j = 12; // 12 的二进制为 1100
j = j >> 2; // 右移 2 位, 1100 变为 0011 (即 3)
System.out.println(j); // 输出 3

>>>= (无符号右移和赋值)

意义: 将变量的当前值按位无符号右移指定的位数,然后将结果赋值给该变量。无符号右移将高位用零填充。

示例:

int k = -16; // -16 的二进制表示为 11111111111111111111111111110000
k >>>= 2; // 等同于 k = k >>> 2;
System.out.println(k); // 输出 1073741820

不使用复合赋值运算符:

int k = -16; // -16 的二进制表示为 11111111111111111111111111110000
k = k >>> 2; // 无符号右移 2 位, 结果为 00111111111111111111111111111100 (即 1073741820)
System.out.println(k); // 输出 1073741820

总结

复合赋值运算符将算术运算和赋值运算结合在一起,使代码更加简洁。在不使用复合赋值运算符的情况下,可以通过普通赋值运算符和相应的算术运算符实现相同的效果。理解这些运算符及其等效的普通表达方式,有助于提高代码的可读性和可维护性。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值