【问题标题】: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)

谁能帮我看看哪一个是最好的方法?为什么?

【问题讨论】:

  • OP - 定义最佳。

标签: 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 方法,因为它可以节省一些内存。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-02-18
        • 2015-04-27
        • 2020-11-21
        • 1970-01-01
        • 2011-09-04
        • 1970-01-01
        • 2011-10-01
        相关资源
        最近更新 更多