利用赋值运算符和加减来实现两个数互换:b = a+b - (a=b);
利用赋值和加乘来实现两个数互换:a = b + (b = a) * 0;
代码原理推理过程:在 idea 中执行下面一行代码,会出现反应1、2
b = b + (b = a);
1、idea 提示(非报错):第二个 b 没反应,第三个 b 显示The value a assigned to ‘b’ is never used
简称: b 从未被使用过
简称:…由"int c; c = 6; 后续无 c 的调用;" 中的第二个 c 会报相同的提示得出
2、idea 提示(非报错):第一个 b 显示The value b + (b = a ) assigned to ‘b’ is never used
但如果在该代码下方写入System.out.println(b); 则上方的 2 将会消失
这说明该式子中的三个 b 都是不同的东西,第二个 b 没反应是因为它是最开始时 int b = 10; 的调用。
第一个 b 有反应是因为它是一个新东西,并且其在下方没有被调用过所以出现反应(这也是在下方加了System.out.println(b);后提示消失的原因)
第三个 b 有反应说明它也属于是一个新建的东西,在下方没有被调用过所以出现提示。
结论:所有被赋值的变量都是新创建出的
这就解释了为什么 b 在被赋值为 a 后再和 b 相加时本质为 b + a 而非 a + a。
但是为什么同一个变量名称会有三种不同的意义: