如果JLS的操作数是较小的类型,那么JLS在哪里指定加法的结果为int?

时间:2013-05-19 11:04:39

标签: java jls

参考Why i am getting type mismatch: cannot convert from int to byte,我尝试在JLS中快速搜索,找到它在哪里提到byte个操作数之间的添加结果会自动扩展为int。< / p>

我找到的最好的是tutorial,但我没有在JLS中找到任何内容。

Conversions章没有提到关于加法运算符的任何内容,至少我找不到一些东西。 Additive Operators paragraph没有提到自动扩大字节。它提到the type of each of the operands of the binary - operator must be a type that is convertible (§5.1.8) to a primitive numeric type,但没有提到扩大。而byte是numeric数据类型。

我错过了什么?

2 个答案:

答案 0 :(得分:3)

你几乎就在那里,它在15.18.2

  

对操作数执行二进制数字提升(第5.6.2节)。

答案 1 :(得分:2)

在Java 7中,相关部分是JLS 5.6.2以及运营商的相应部分;例如JLS 15.18.2用于数字上的二元加法运算符。

操作员部分说首先执行二进制促销。然后,第5.6.2节解释了byteshortchar的二进制提升意味着如果另一个操作数是完整的,则转换为int