【问题标题】:Best way to cast int(primitive) to Long(wrapper) in Java在 Java 中将 int(primitive) 转换为 Long(wrapper) 的最佳方法
【发布时间】:2020-09-05 02:16:41
【问题描述】:
我在 Java 中有一个原始类型 int "pubNumber"。
我想将其转换为“Long”(不是原始),据我了解,有以下方法可以做到这一点。
1. Long.valueOf(pubNumber)
2. (long) pubNumber
3. new Long(pubNumber)
谁能帮我看看哪一个是最好的方法?为什么?
【问题讨论】:
标签:
java
casting
integer
long-integer
autoboxing
【解决方案1】:
您应该避免使用new Long(pubNumber),因为它总是会创建一个新的Long 实例。
另一方面,如果要转换为 Long 的值介于 -128 和 127 之间,Long.valueOf(pubNumber) 将返回缓存的 Long 实例。
(long) pubNumber 的行为应该与Long.valueOf(pubNumber) 相同,因为在转换为long 之后,它将自动装箱为Long,我相信long 的自动装箱到@987654331 @ 使用Long.valueOf()。
【解决方案2】:
Long.valueOf(pubNumber) 是最好的方法,因为它使用缓存中的值(如果存在)。
阅读here
public static Long valueOf(long l)
返回一个 Long 实例
表示指定的 long 值。如果一个新的 Long 实例不是
需要时,通常应优先使用此方法
构造函数 Long(long),因为这种方法很可能会产生
通过频繁缓存显着提高空间和时间性能
请求的值。请注意,与
整数类,此方法不需要缓存一个内的值
特定范围。
参数: l - 一个 long 值。
返回: 表示 l 的 Long 实例。
自: 1.5
【解决方案3】:
Long.valueOf(pubNumber) 和 new Long 的区别在于使用 new Long() 总是会创建一个新对象,而使用 Long.valueOf() 可能会返回 long 的缓存值,如果值是在 [-128 到 127] 之间。
所以,你应该更喜欢 Long.valueOf 方法,因为它可以节省一些内存。