4

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

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

问题是:我想使用一种方法从整数、双精度数等...和字符串中获取字符串。我只是想知道我是否应该创建另一种方法。

谢谢,对不起,如果这是重复的,我没找到

4

6 回答 6

8

从技术上讲,是的。通过调用两个都不起作用的方法调用(valueOf()以及toString()在 String 对象上),它会变慢。

实际上,根本不是,除非你做了数百万次(除此之外别无他法)。调用两个几乎无操作的方法不会花费您任何费用。

于 2013-06-11T12:56:20.407 回答
4

哦,可能会稍微慢一些,因为String.valueOf(object o)is 有效o.toString()if ois not null。因此,您有可能或不能内联的方法调用的开销。然而效果极小。但这不是这里重要的,重要的是清晰

string1 = string2

比你更清楚地表达你的意图

string1 = String.valueOf(string2);

因此,出于这个原因,请使用前者。这是没有道理的。

你没有说是不是这样,但假设你是想告诉我们的,我觉得string1string2舒服String

于 2013-06-11T12:56:59.880 回答
1

你的问题和你的解释不匹配。

String s1 = s2String s1 = String.valueOf(s2)(为了证明:自己尝试一下,它只是一个带有随机字符串的定时 for 循环)。

但是,您的解释是您想从简单地使用的数字中获取字符串String s = ""+<thing>(事物可以是原始的,例如intor double,也可以是任何对象,在这种情况下它toString()被隐式调用),那么您要问的是两者中的哪一个?

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

于 2013-06-11T13:02:15.657 回答
1

它更慢,因为您正在进行方法调用而不是简单的内存位置分配。

于 2013-06-11T12:56:18.100 回答
0

当然 String.valueOf(string2) 速度较慢,这是一个具有数十个字节码操作的方法调用,而将值分配给本地 var 是几个字节码。

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

于 2013-06-11T12:57:42.120 回答
0

Integer, Double, Float,Boolean都有一个方法valueOf(String s)。这会将 a 转换String为所需的类。您不需要额外的课程。

于 2013-06-11T12:57:07.697 回答