为什么JDK设计人员决定不进行类型转换然后自动装箱?

时间:2019-02-19 11:31:10

标签: java long-integer

在Java中,以下行不显示编译错误

long a = 10;

但以下行会引发编译错误“不兼容的类型”

Long a = 10;

我知道以上声明应写为

Long a = 10L;

但是我想了解为什么JDK设计人员决定不做类型转换,然后自动装箱,只做其中之一?

2 个答案:

答案 0 :(得分:1)

这是默认行为。要使用scale()常量,只需在数字末尾添加“ l”:

Long

答案 1 :(得分:0)

第一个示例没有给出编译错误,因为long类型比int宽。您可以像这样进行分配:

double -> float -> long -> int -> short -> byte

第二个示例需要自动装箱,但是Java只能将原始类型自动装箱到相应的包装器。例如。 longLongintInteger,...

这就是为什么要区分不同类型的原因,可以添加字母:

5L-长,5d-双精度,5f-浮动

有关更多详细信息,请参见此处Java: Why can't I cast int to Long