在Java中,给出:
int x = 4;
double y = 4.5123;
为什么要编码:
x += y; // in my head I think, "The new value of x is the old value plus y."
但是我不能简单地这样分配:
x = y;
TIA的答案。
因为语言规范是这样说的。也许一个令人沮丧的答案–但这是唯一可用的正确答案。是的,这有点奇怪; “赋值运算符(+=, -=, *=
等)”包括免费的,不可见的强制转换操作。编写x += y
,其中x的类型为int
,而y为任何类型的表达式都等效于x += (int) y
。我不太确定为什么要按原样编写规范。我所知道的:这永远不会*改变;除非有非常充分的理由,否则Java不习惯进行更改,这些更改会破坏为较早版本的Java编写的代码,除非有充分的理由,而且解决这种怪异之处还不足以保证更改。
注意:是的,x += y
的意思是“ x的新值是x的旧值加上y的值”。
*)永远不要说永远,矢田田。让我们说,如果您给我10,000的赔率中有1个赔率,那么我将押注5年之内java中的赔率会有所不同,并打赌这不会改变。