java中 a=a+1;和a+=1;有什么区别

 我来答
貌似風輕
2018-02-02 · TA获得超过7280个赞
知道大有可为答主
回答量:1672
采纳率:94%
帮助的人:703万
展开全部
a+=b 等价于 a=(a.Type)(a+b); //返回的是a类型,强制转换

a=a+b 等价于 a=a+b; //返回类型是a类型与b类型中的最高类型

所以当a是int类型时 a=a+1;和a+=1; 没有区别。(网上有说+=的效率更高,这个没有研究过。但个人认为 1.现代编译器对我们的代码都会做很多优化,相信编译器的优化肯定会考虑这些问题所以大概率来说最终两者编译后的结果是一样的;2.就算编译器未优化,这点效率的差别在如今的硬件上几乎是体现不出来的,实际编程中不用考虑)

如果当a是short类型时区别就出来了,直接看代码截图

类似的,下面的代码也会有这种问题

int a = 2;
a += 1.2;    // 不报错,最终 a = 3
a = a + 1.2; // 报错
shala202020
2015-05-19 · TA获得超过4159个赞
知道小有建树答主
回答量:1410
采纳率:85%
帮助的人:376万
展开全部
当a是int 类型时a=a+1 和a+=1 就这两个是没有区别的。当a是double就有区别了。
还有+=的执行效率会稍微高一点,结果一样。
区别的举例如下:
a+=b --> a=(a.Type)(a+b);//返回的是a类型
a=a+b --> a=a+b;//返回类型是a类型与b类型中的最高类型
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
楚秋梵硕2Z
推荐于2017-09-21 · TA获得超过143个赞
知道答主
回答量:42
采纳率:0%
帮助的人:46.3万
展开全部
a=a+1会被强制转换为更高的数据类型,a+=1不会被转换类型,也就是数据类型不变,两个计算结果一样的。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
随性亻
推荐于2017-09-21 · TA获得超过4180个赞
知道小有建树答主
回答量:4622
采纳率:84%
帮助的人:642万
展开全部
a=a+1,是先取a的值,在进行加加操作。它等同于a++;
a+=1,是先对a进行加1操作,在返回a的值。它等同于++a;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Conqueror
高粉答主

2018-05-22 · 关注我不会让你失望
知道大有可为答主
回答量:794
采纳率:100%
帮助的人:24.8万
展开全部

(1)a=a+1,是先取a的值,在进行加加操作。它等同于a++。

(2)a+=1,是先对a进行加1操作,在返回a的值。它等同于++a。

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。

Java由四方面组成:

(1)Java编程语言,即语法。

(2)Java文件格式,即各种文件夹、文件的后缀。

(3)Java虚拟机(JVM),即处理*.class文件的解释器。

(4)Java应用程序接口(Java API)。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式