考虑以下:
int a = 1;
double b = 0.5;
System.out.println(a += b); // case x
System.out.println(a = a + b); // case y
显而易见的是,上面的代码甚至无法编译 - 案例 y 将由于“不兼容的类型”而失败。如果我自己运行 case x,它只会返回 a。
这里发生了什么?速记运算符 (+=) 是否“捕获”失败的赋值并默认简单地返回 lhand 值?如果是这样,那么声称 a += b 等价于 a = a + b 是否真的正确,这在教程中很常见?