Long ll = 102; // Error
Byte bb = 101; // No error
为什么Long
分配导致编译时错误而Byte
分配是好的?的Java在分配方面长期原始的转换和int
Long ll = 102
导致编译器错误“类型不匹配:无法从int转换为长”。我假设编译器将扩大到102至long
,然后框到Long
。 但它没有发生。
但是Byte bb = 101;
不产生编译器错误。在这里我猜,101被缩小到byte
(非长整数常量),然后装箱到Byte
。 当缩小没有问题时,扩大的问题是什么?
顺便说一句'龙LL = 102L;'会的工作 – janos
感谢。我知道更改代码以避免编译器错误,但我想了解编译器的行为。 – Lalith
顺便说一句如果你可以使用基元,不要使用对象/包装,它们更简单,更快。 –