我知道可以使用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)
。
答案 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()
更好,速度更快,以避免无意义的对象创建。