将Long值解析为Long?

时间:2016-03-10 13:38:22

标签: java boxing

我正在使用一个非常古老的代码库,因此存在大量已弃用或过时的代码。大部分都是简单的拳击前。

但是这个问题跟我提出了一个问题:

private java.lang.Long version = Long.valueOf(-1L);

-1L是否已将值定义为Long?这之前有可能吗?

请注意,它不是-1l,而是-1L

我会理解它是写成-1还是-1l。有人可以向我解释发生了什么事吗?

1 个答案:

答案 0 :(得分:5)

-1l-1L相同 - 都是原始的long文字。

Long.valueOf()返回一个Long实例,其值与传递的原语相同。

值得注意的是Long.valueOf()在向其传递小值时使用LongCache(即-128到127之间的值),因此它没有创建一个新的Long实例。

只需指定Long version = -1L;即可将-1L原始文字自动设为Long。是否将通过自动装箱创建新的Long实例或编译器将足够聪明以使用LongCache取决于编译器。我想无论是谁写了你发布的代码,都不想依赖编译器做聪明的事情。