het*_*lek 5 java compiler-errors
为什么会当试图初始化错误Double到int,即使使用基本类型时,它不会抛出异常,double?
Double a = 1; // error - incompatible types
Double b = 1.0; // OK
double c = 1; // OK
Run Code Online (Sandbox Code Playgroud)
为什么类Double和原始类型之间的行为不同,double?
当您初始化Doubleas时:
Double a = 1;
Run Code Online (Sandbox Code Playgroud)
需要做两件事:
int到IntegerInteger到Double虽然,拳击很好,但从扩大Integer到Double无效.因此,它无法编译.
请注意,Java不支持扩展,然后支持Boxing转换,如JLS§5.2中所述:
赋值上下文允许使用以下之一:
- 身份转换(§5.1.1)
- 扩展的原始转换(第5.1.2节)
- 扩大参考转换(第5.1.5节)
- 一个拳击转换(§5.1.7),可选地后跟一个加宽的引用转换
- 一个拆箱转换(第5.1.8节),可选地后跟一个加宽的基元转换.
你的第二个任务是通过拳击转换.
虽然第3 次分配通过扩大转换.