为什么我需要为Integer变量转换一个字符而不是为int转换?

raj*_*eev 2 java casting

我需要在这里将字符转换为int类型的原因是什么:

Integer integer= (int) 'a';
Run Code Online (Sandbox Code Playgroud)

但我不需要在这里施放:

int i='a';
Run Code Online (Sandbox Code Playgroud)

kos*_*osa 5

根据Java语言规范5.1.7.拳击转换

拳击转换将基本类型的表达式转换为引用类型的相应表达式.具体来说,以下九个转换称为装箱转换:

从类型布尔值到类型布尔值

从类型字节到类型字节

从短类型到短类型

从类型char到类型字符

从int类型到Integer类型

从类型long到类型Long

从类型float到类型Float

从double类型到Double类型

从null类型到null类型

此规则是必要的,因为条件运算符(第15.25节)将装箱转换应用于其操作数的类型,并将结果用于进一步的计算.