本问题已经有最佳答案,请猛点这里访问。
以下两行代码之间有什么区别吗?
a += 10;
a = a + 10;
哪一个更好用?
不。使用您认为最易读的。
@Mat不是可能重复,而是完全重复。:)
如果两个操作数在左侧是相同类型或兼容类型作为变量那么它将没有任何区别。但是左侧的类型与右侧表达的结果不匹配然后它将产生差异。这个+=复合赋值运算符 将在内部进行类型转换。因此使用a += 10;会更好。
如果你有byte a = 1;,那么这不会编译a = a + 10;,但是这样做a += 10;不同之处在于存在隐式转换。
不,他们是一样的。
第一个a = a + 10是长版本或表达式的完整版本,第二个a += 10是增量运算符。
他们的结果是一样的。它会将当前值加10。
http://java.about.com/od/c/g/compoundassgnment.htm
所有复合运营商。
Jon Skeet的一些帮助
A compound assignment expression of the form E1 op= E2 is equivalent to E1 = (T)((E1) op (E2)), where T is the type of E1, except that E1 is evaluated only once.
意思就是
a += 10
等于这个陈述,
a = (int) (a + 10);
因此,只有编译器才有表达式和转换差异。否则他们的输出会是相同的。
这是参考链接。 https://stackoverflow.com/a/2081951/1762944
否 - + =语法更清晰,通常更清晰,但底层实现是相同的。
我会推荐
a+=10
因为它会在内部进行类型转换
示例:
错误:
byte b=1;
b=b+1;
没错误:
byte b=1;
b+=1;
没有区别。
a=a+10;最好使用,因为它很好地阅读和维护代码。
有一点不同stackoverflow.com/a/23826828/2194456