在java语言中,a+=b和a=a+b的主要区别是在运算的精度上。类似的有“-= 、 *= 、/= 、%= ”,这里以a+=b 与 a=a+b 举例说明一下。
下面是一串代码,我们试一下a=a+b的形式:
short a=1;
byte b=2;
a=a+b;
报错原因说是“类型不匹配:不能从int转换为byte”,
在java中,在a+b时,会进行自动类型转换 ,所以a和b会转换成int类型。而变量a还是short类型,将int 类型的结果赋值给short类型的a ,无疑会报错。
下面试一试a+=b的形式:
short a=1;
byte b=2;
a+=b;
+=是java中的一个运算符,在运算时会进行自动类型转换。所以在编译时没有报错。
总结一下,在两个变量的数据类型一样时:a+=b 和a=a+b 是没有区别的。
但是当两个变量的数据类型不同时,就需要考虑一下数据类型自动转换的问题了。
也就是涉及到精度了。