当前位置:
首页 >
a+=b 等价于 a=a+b ?
发布时间:2025/3/20
35
豆豆
生活随笔
收集整理的这篇文章主要介绍了
a+=b 等价于 a=a+b ?
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
a += b和a = a + b全然等价么(java)?可能非常多人以为是一样的,事实上并不是等价的,以下看一下证据吧。
public class Test {public static void main(String[] args) {int a = 0;float c = 2.0f;a += c;a = a + c; //①} }上面的代码有问题么? 可以通过编译么? 答案是否定的。
$ javac Test.java Test.java:6: error: possible loss of precisiona = a + c;^required: intfound: float 1 error出现的问题是编译错误。 可是a += c却不会出现编译错误,可以正常通过编译。
为什么为这样呢?
我们将①处代码去除后,顺利编译,能够使用jd-gui等工具看一下a += c的反编译后的代码:
public class Test {public static void main(String[] paramArrayOfString){int i = 0;float f = 2.0F;i = (int)(i + f);} }看一下下面这句:
i = (int)(i + f);能够看出a += c在编译的时候做了强制类型转换。
结论: 对于 a += c 假设a的类型能够兼容b。则 (a += c) == (a = a + c) 否则,则会在a与c做完加法后进行强制转换。很多其它文章请訪问小胖轩.
总结
以上是生活随笔为你收集整理的a+=b 等价于 a=a+b ?的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: [转载]为什么使用 SLF4J 而不是L
- 下一篇: 获取个人借阅信息---图书馆client