Java LONG整数类型

时间:2011-12-05 04:28:10

标签: java

您是否需要将Long变量定义为

Long myUserId = 1L;

为什么你不能只做Long myUserId = 1;

2 个答案:

答案 0 :(得分:7)

Long myUserId = 1;   // error

不起作用,因为1是一个int。

它将自动装箱:

Integer myUserId = 1;   // ok

它也将扩大到:

long myUserId = 1;      // also ok

但不是两者。

所以,是的,你必须说

Long myUserId = 1L;  

这是long可以自动装箱到Long

至于为什么它以这种方式工作(或者说在这种情况下不起作用):很可能是因为稍后添加了自动装箱(在Java5中),并且必须绝对向后兼容。这限制了他们能够“平稳”地做到这一点。

答案 1 :(得分:1)

因为否则,Java会将所有数字类型默认为Integer。

甚至允许将“1L”分配给Long(而不是原始long)的唯一原因是由于Java 5引入了“自动装箱”。

没有“1L”,幕后,这看起来像没有“L”的情况如下:

Long myUserId = Integer.valueOf(1);

...我希望这显然可以解释。 : - )