2

关于为什么我得到类型不匹配:无法从 int 转换为 byte,我尝试在 JLS 中快速搜索以查找它提到的byte操作数之间相加的结果自动扩大到的位置int

我找到的最好的是本教程,但我在 JLS 中没有找到任何东西。

转换一章没有提到任何关于加法运算符的内容,至少我找不到任何东西。Additive Operators 段落没有提到字节的自动加宽。它提到了这一点 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 是数字数据类型。

我错过了什么?

4

2 回答 2

3

你快到了,它在15.18.2

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

于 2013-05-19T11:11:00.677 回答
2

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

运算符部分说首先执行二进制提升。然后第 5.6.2 节解释了 , 的二进制提升byte,如果另一个操作数是整数short,则char表示转换为。int

于 2013-05-19T11:12:22.560 回答