[英]Why initialization of new Long Wrapper with int literal is valid?
[英]Assigning an int literal to a long wrapper class in java
为什么在Long l = 3
而不是Long l = 3L
出现编译错误?
原始数据类型long
接受3
和3l
。 我知道3
是一个int
常量,但是不能将其分配给Long
包装器对象吗? int
只有32位,难道不适合64位整数类型吗?
因为没有一个int
到Long
加宽和自动装箱转换,自动装箱从转换long
到Long
(但第一值必须从一个加宽 int
到long
)。 您可以按照自己的3L
做3L
,或者
Long l = Long.valueOf(3);
要么
Long l = (long) 3;
有关其他答案:
3L
等于(long)3
>将其解析为3L,因为它是长整数
3是整数文字
3L是长字面量
简而言之,它们彼此不同,因此您需要将int解析为long,反之亦然。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.