java - 简写赋值运算符,+=,真正的意思?

标签 java assignment-operator shorthand implicit-conversion

我了解到i+=2i=i+2的简写。但现在我对此表示怀疑。 对于下面的代码,上面的知识并不适用:

byte b=0; b=b+2; //Error:Required byte, Found int

上面的代码是有道理的,因为2int类型,表达式返回int值。

但是,下面的代码运行良好:

byte b=0; b+=2; //b stores 2 after += operation

这迫使我怀疑 += 简写运算符在某种程度上比我所知道的更多。 请赐教。

最佳答案

如有疑问,您可以随时查看 Java 语言规范。在这种情况下,相关部分是 15.26.2,复合赋值运算符。

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.

所以您几乎是正确的,只是还添加了类型转换。在你的情况下: b+=2; 符合 b=(byte)(b+2);

关于java - 简写赋值运算符,+=,真正的意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16362017/

相关文章:

c++ - `std::bitset::reference` 赋值运算符?

c++ - 对于重载的静态成员函数没有可行的重载 '='

javascript - JavaScript 中 && 简写的解释

java - 将 JSON 响应映射到 POJO(使用不同的名称)

java - 分段上传不适用于 android + rails

c - c中malloc的多个单行赋值

css - 用于指定所需边框的终极 CSS 快捷方式

javascript - foo 的三元简写?富: bar

java - 获取所有 POJO 类(在 deep.model 类、实体中)

java - 如何在 Java 中区分 LAN 上的在线 IP 地址与本地 IP/其他机器 IP