通常,您不能在分配中应用多个(隐式)转换(JLS§5.2分配转换):
将表达式的值(第15.26节)分配给变量时,将发生赋值转换:必须将表达式的类型转换为变量的类型。分配上下文允许使用 以下之一 :
- 身份转换(第5.1.1节)
- 不断扩大的原始转换(第5.1.2节)
- 扩展参考转换(第5.1.5节)
- 装箱转换(第5.1.7节)(可选),然后进行扩大的参考转换
- 取消装箱转换(第5.1.8节),然后可以选择加宽原始转换。
Long l=250;需要两次转换(先扩大原始转换再进行装箱转换),这就是为什么它不编译的原因。
Long l=250l;进行编译,因为它需要一次装箱转换。
但是缩小常量表达式的转换是一个特例,这就是为什么要
Short s=250;编译:
此外,如果该表达式是类型为byte,short,char或int的常量表达式(第15.28节):
- 如果变量的类型为byte,short或char,并且常量表达式的值可表示为变量的类型,则可以使用缩窄的原始转换。
- 如果变量的类型为:可以使用紧缩原始转换后跟装箱转换。
- 字节和常量表达式的值可以在类型字节中表示。
- 短,常量表达式的值可以用短类型表示。
- 字符和常量表达式的值可以用char类型表示。



