这只是一个信息性问题,我不需要你告诉我我不应该使用它。
我的问题是:如果我使用string1 = String.valueOf(string2);
,它会比慢string1 = string2;
吗?
问题是:我想使用一种方法从整数、双精度数等...和字符串中获取字符串。我只是想知道我是否应该创建另一种方法。
谢谢,对不起,如果这是重复的,我没找到
从技术上讲,是的。通过调用两个都不起作用的方法调用(valueOf()
以及toString()
在 String 对象上),它会变慢。
实际上,根本不是,除非你做了数百万次(除此之外别无他法)。调用两个几乎无操作的方法不会花费您任何费用。
哦,可能会稍微慢一些,因为String.valueOf(object o)
is 有效o.toString()
if o
is not null
。因此,您有可能或不能内联的方法调用的开销。然而效果极小。但这不是这里重要的,重要的是清晰。
string1 = string2
比你更清楚地表达你的意图
string1 = String.valueOf(string2);
因此,出于这个原因,请使用前者。这是没有道理的。
你没有说是不是这样,但假设你是想告诉我们的,我觉得string1
很string2
舒服String
。
你的问题和你的解释不匹配。
String s1 = s2
比String s1 = String.valueOf(s2)
(为了证明:自己尝试一下,它只是一个带有随机字符串的定时 for 循环)。
但是,您的解释是您想从简单地使用的数字中获取字符串String s = ""+<thing>
(事物可以是原始的,例如int
or double
,也可以是任何对象,在这种情况下它toString()
被隐式调用),那么您要问的是两者中的哪一个?
最后,您的问题是关于速度的:即使您正在解析数百万个条目,这些不同的方法都不会对您的程序的运行速度有任何显着影响。两者之间的减速将在几个小时的运行时间中产生几秒钟的差异。这不值得优化。
它更慢,因为您正在进行方法调用而不是简单的内存位置分配。
当然 String.valueOf(string2) 速度较慢,这是一个具有数十个字节码操作的方法调用,而将值分配给本地 var 是几个字节码。
至于整数、双精度数等,我们别无选择,只能调用 String.valueOf
类Integer
, Double
, Float
,Boolean
都有一个方法valueOf(String s)
。这会将 a 转换String
为所需的类。您不需要额外的课程。