使用String.valueOf(myString)会变慢吗?

时间:2013-06-11 12:53:34

标签: java string

这只是一个信息问题,我不需要你告诉我我不应该使用它。

我的问题是:如果我使用string1 = String.valueOf(string2);,它是否比string1 = string2;慢?

事情是:我想使用一个方法从整数中获取一个字符串,双倍ect ...和字符串。我只想知道是否应该创建另一种方法。

谢谢,对不起,如果这是一个重复,我没有找到它

6 个答案:

答案 0 :(得分:7)

技术上,是的。通过调用两个方法调用来减慢速度,这两个方法调用都不起作用(String对象上有valueOf()toString())。

实际上,根本不是,除非你做了数百万次(而且没有别的)。调用两个几乎没有操作的方法不需要花费任何费用。

答案 1 :(得分:4)

哦,如果String.valueOf(object o)不是o.toString() onull有效string1 = string2 ,可能稍微。因此,您有方法调用的开销,可以或不可以内联。 效果非常小。但是这里重要的是什么,重要的是清晰度

string1 = String.valueOf(string2);

更明确地表达了您的意图
string1

因此,出于这个原因,使用前者。这是一个没脑子的人。

你没有说是不是这样,但我觉得你打算告诉我们string2String是{{1}} s。我觉得很自在。

答案 2 :(得分:1)

从简单的事实是你进行方法调用而不是简单的内存位置分配,它会变慢。

答案 3 :(得分:1)

您的问题与解释不符。

String s1 = s2String s1 = String.valueOf(s2)更快(对于证明:自己尝试一下,它只是一个带有随机字符串循环的时间)。

但是,你的解释是你希望从数字中获取字符串,它只使用String s = ""+<thing>(事物可以是原始的,如intdouble,但也可以是任何对象,在这种情况下,toString()被隐式调用,所以你要问哪两个?

最后,您的问题是关于速度:即使您正在解析数百万条目,这些不同方法也不会对程序的运行时速度产生任何重要影响。两者之间的减速将在几个小时的运行时间上产生差异。这不值得优化。

答案 4 :(得分:0)

班级IntegerDoubleFloatBoolean都有方法valueOf(String s)。这会将String转换为所需的类。你不需要额外的课程。

答案 5 :(得分:0)

当然String.valueOf(string2)比较慢,这是一个带有几十个字节码操作的方法调用,而为本地var赋值是几个字节码。

至于整数,双打等我们别无选择,只能调用String.valueOf