问题

直到今天,我都一直以为:
i += j 等同于 i = i + j;
但如果有:
int i = 5;
long j = 8;
这时 i = i + j不能编译。但i += j却能够编译。这说明两者还是有区别的
这是否意味着,i += j,实际是等同于 i= (type of i) (i + j)呢?



精华回答:
这个问题,事实上官方文档中已经解答了。 请看这里。§15.26.2
Compound Assignment Operators
再照搬下官方文档的说明
对复合赋值表达式来说。E1 op= E2(诸如i += j;i-=j等等),事实上是等同于E1 = (T)((E1) op (E2)),当中,T是E1这个元素的类型。
举例来说。例如以下的代码
short x = 3;
x += 4.6;
等于
short x = 3;
x = (short)(x + 4.6);


stackoverflow链接
http://stackoverflow.com/questions/8710619/java-operator

专栏介绍:

很喜欢stackoverflow,总能在上面找到疑难杂症的解决的方法。偶然发现该站点有一个热度榜单。于是精选了热度较高的一些问题,阅读每一个问题的答案。然后依照自己的理解梳理出来。

因此,这些文章不是真正的翻译。而是依照自己的理解做了一些增删、润色,希望能把上面的讨论,更精简有效地分享给大家。

如需转载,请注明原文地址

最新文章

  1. ios学习-控制按钮图片的走动和变换
  2. App所需申请资料
  3. geometric median
  4. Servlet 实现上传文件以及同时,写入xml格式文件和上传
  5. java本地方法如何调用其他程序函数,方法详解2
  6. 【BZOJ】1085: [SCOI2005]骑士精神(A*启发式搜索)
  7. JAVA 图形界面 JFrame容器
  8. Memcache简介
  9. Mono for Android开发调研笔记
  10. HDU 2845 Beans (动态调节)
  11. Redis可视化工具Redis Desktop Manager使用
  12. opencv 小程序170323
  13. 通过修改注册表设置windows环境变量
  14. OVMF基础
  15. 第一课——git的简介和基本使用
  16. springboot用户登陆密码两次md5加密
  17. Oracle impdp的ignore及 fromuser / touser 功能
  18. ERP渠道信息的修改和渠道联系记录(二十三)
  19. 构建更好的客户端 JavaScript 应用
  20. BZOJ2590 [Usaco2012 Feb]Cow Coupons

热门文章

  1. NetFlow
  2. wordpress参考网站
  3. flex容器解析
  4. MVC折线图应用
  5. 浅析WebGIS
  6. UVA 10131 Is Bigger Smarter?(DP)
  7. Parallels destop8 无法创建bootcamp虚拟机
  8. javascript模式——Facade
  9. 随机抽样一致性算法(RANSAC)
  10. C++ Primer 读书笔记:第11章 泛型算法