Long.parseLong(String s)和new Long(String s)之间的区别?

时间:2014-01-02 08:18:15

标签: java string long-integer

我知道可以使用Long.parseLong(String)方法和Long(String)构造函数将String转换为long。

String str="12356";
Long myvar= Long.parseLong(str);
Long myvar2 = new Long(str);

它们都提供相同的输出。 myvar和myvar2的值相同。我想知道哪一个提供了更好的效果以及何时使用parseLong以及何时使用新的Long(String s)

5 个答案:

答案 0 :(得分:6)

区别在于

  • parseLong返回原语
  • new Long()将始终创建新的目标

答案 1 :(得分:5)

new Long始终创建新的对象,而parseLong则不会。

我建议你浏览每个implementation

答案 2 :(得分:0)

如果打开Long.java源代码,可以看到Long(String)实际上调用了parseLong(String)。

唯一的区别是创建一个新的Long对象。因此,如果忽略对象创建成本,它们会提供相同的性能。

答案 3 :(得分:0)

构造函数(new Long(String))立即调用Long.parseLong(String)方法。因此,如果您使用parseLong(),则会省略额外的通话。但是,他们实际上会给出类似的表现。

Java的来源:

public Long(String s) throws NumberFormatException {
    this.value = parseLong(s, 10);
}

答案 4 :(得分:0)

如果这个问题确实意味着Long myvar = Long.parseLong(str),那么这些问题实际上是相同的,因为这一行还包含一个新的Long拳击创建。在这两种情况下都会调用parseLong(),并在分配了字段的情况下创建新的Long

如果意图是创建一个long而不是更有可能,那么parseLong()更好,速度更快,以避免无意义的对象创建。