java速记赋值运算符,+=,真正含义是什么?
我知道i+=2
是i=i+2
的缩写。但现在我对此表示怀疑。
对于以下代码,上述知识并不适用:
byte b=0;
b=b+2; //Error:Required byte, Found int
上面的代码是合理的,因为2
是int
类型,表达式返回int
值
但是,以下代码运行良好:
byte b=0; b+=2; //b stores 2 after += operation
这迫使我怀疑+=
速记操作符比我知道的要多一些。
请启发我
# 1 楼答案
来自C++背景,我可以尝试声称这个概念是相似的。操作符
+=
被定义为对象左侧的一个方法,将对象作为参数传递到其右侧。这使得语言的编写者可以轻松地添加诸如类型转换和兼容性修复之类的内容。就我所知,唯一的一点是,Java不允许用户重载运算符函数