为什么JDK设计师决定不进行类型转换然后自动装箱? [重复]

问题描述 投票:0回答:2

这个问题在这里已有答案:

在Java中,以下行不会出现编译错误

long a = 10;

但是以下行抛出编译错误“不兼容类型”

Long a = 10;

我知道上面的陈述应该写成

Long a = 10L;

但我想理解为什么JDK设计师决定不进行类型转换然后自动装箱而只做其中一个?

java long-integer
2个回答
1
投票

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

Long number = 10l;

0
投票

第一个例子没有给出编译错误,因为long类型比int宽。您可以执行以下任务:

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

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

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

5L - long,5d - double,5f- float

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

© www.soinside.com 2019 - 2024. All rights reserved.