这只是一个信息问题,我不需要你告诉我我不应该使用它。
我的问题是:如果我使用string1 = String.valueOf(string2);
,它是否比string1 = string2;
慢?
事情是:我想使用一个方法从整数中获取一个字符串,双倍ect ...和字符串。我只想知道是否应该创建另一种方法。
谢谢,对不起,如果这是一个重复,我没有找到它
答案 0 :(得分:7)
技术上,是的。通过调用两个方法调用来减慢速度,这两个方法调用都不起作用(String对象上有valueOf()
和toString()
)。
实际上,根本不是,除非你做了数百万次(而且没有别的)。调用两个几乎没有操作的方法不需要花费任何费用。
答案 1 :(得分:4)
哦,如果String.valueOf(object o)
不是o.toString()
o
,null
有效string1 = string2
,可能稍微。因此,您有方法调用的开销,可以或不可以内联。 效果非常小。但是不这里重要的是什么,重要的是清晰度。
string1 = String.valueOf(string2);
比
更明确地表达了您的意图string1
因此,出于这个原因,使用前者。这是一个没脑子的人。
你没有说是不是这样,但我觉得你打算告诉我们string2
和String
是{{1}} s。我觉得很自在。
答案 2 :(得分:1)
从简单的事实是你进行方法调用而不是简单的内存位置分配,它会变慢。
答案 3 :(得分:1)
您的问题与解释不符。
String s1 = s2
比String s1 = String.valueOf(s2)
更快(对于证明:自己尝试一下,它只是一个带有随机字符串循环的时间)。
但是,你的解释是你希望从数字中获取字符串,它只使用String s = ""+<thing>
(事物可以是原始的,如int
或double
,但也可以是任何对象,在这种情况下,toString()
被隐式调用,所以你要问哪两个?
最后,您的问题是关于速度:即使您正在解析数百万条目,这些不同方法也不会对程序的运行时速度产生任何重要影响。两者之间的减速将在几个小时的运行时间上产生差异。这不值得优化。
答案 4 :(得分:0)
班级Integer
,Double
,Float
,Boolean
都有方法valueOf(String s)
。这会将String
转换为所需的类。你不需要额外的课程。
答案 5 :(得分:0)
当然String.valueOf(string2)比较慢,这是一个带有几十个字节码操作的方法调用,而为本地var赋值是几个字节码。
至于整数,双打等我们别无选择,只能调用String.valueOf