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

如题所述

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; // 报错

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-05-19
当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类型中的最高类型
第2个回答  推荐于2017-09-21
a=a+1会被强制转换为更高的数据类型,a+=1不会被转换类型,也就是数据类型不变,两个计算结果一样的。本回答被提问者采纳
第3个回答  推荐于2017-09-21
a=a+1,是先取a的值,在进行加加操作。它等同于a++;
a+=1,是先对a进行加1操作,在返回a的值。它等同于++a;
第4个回答  2018-05-22

(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)。

相似回答