JLS(第15.8.2节)说:
“将二进制+运算符应用于两个数字类型的操作数时,将执行加法运算,从而得出这些操作数之和。”
“对操作数执行二进制数值提升(第
5.6.2节)。”
这意味着表达式的操作数将转换为
int。因此,除了将添加
int到
int。
“数字操作数上加法表达式的类型是其操作数的提升类型。”
就您而言,
int。
我不会猜测为什么这样做。但是,这绝非偶然。如果你看一下如JVM规范中定义的字节码指令集,你会看到有算术指令
int,
long,
float和
double…但不使用较小的整数类型。



