Java LONG 整数类型
Posted
技术标签:
【中文标题】Java LONG 整数类型【英文标题】:Java LONG integer types 【发布时间】:2011-12-05 04:28:09 【问题描述】:您是否需要将Long
变量定义为
Long myUserId = 1L;
?
你怎么不能只做Long myUserId = 1;
?
【问题讨论】:
你自己回答了第一个问题。 我猜你可以分配“1”(或任何“int”值的编译时表达式),编译器会进行强制转换来完成分配。 @IraBaxter:它会进行加宽转换(从 int 到 long),但之后不会自动装箱。 查看下面的***.com/questions/769963/…..它有解释。 @Thilo:我错过了“Long”与“long”。 【参考方案1】:Long myUserId = 1; // error
不起作用,因为1
是一个整数。
它会自动装箱到:
Integer myUserId = 1; // ok
它也将扩大到:
long myUserId = 1; // also ok
但不是两者兼而有之。
所以,是的,你不得不说
Long myUserId = 1L;
这是一个long
,可以自动装箱成Long
。
至于为什么它以这种方式工作(或者在这种情况下不起作用):很可能是因为后来添加了自动装箱(在 Java5 中),并且必须绝对向后兼容。这限制了他们能做到的“顺利”程度。
【讨论】:
【参考方案2】:否则,Java 会将所有数字类型默认为整数。
甚至允许将“1L”分配给Long
(而不是原语long
)的唯一原因是Java 5 引入了“自动装箱”。
没有“1L”,在幕后,这看起来像下面没有“L”:
Long myUserId = Integer.valueOf(1);
...我希望这显然可以解释。 :-)
【讨论】:
以上是关于Java LONG 整数类型的主要内容,如果未能解决你的问题,请参考以下文章