JAVA一行代码实现整型int互换的原理:b = a+b - (a=b);、a = b + (b = a) * 0;

本文通过分析Java代码`b = a+b - (a=b)`和`a = b + (b = a) * 0;`探讨了如何利用赋值运算符实现整型变量的互换。通过IDEA中的提示,揭示了编译器在处理这些表达式时如何创建新的变量实例,并强调了这种现象是由Java编译器导致的,与C++等其他语言不同。通过反编译,进一步展示了编译后的实际操作步骤。
摘要由CSDN通过智能技术生成

利用赋值运算符和加减来实现两个数互换: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。
但是为什么同一个变量名称会有三种不同的意义:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodeYello

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值