String.valueOf(int),`+`字符串运算符和Integer.toString(int)之间的区别

时间:2012-04-06 13:04:58

标签: java

不确定这是否会被投票或关闭......我需要专家意见。

上下文在我们的应用程序中,我们编写了如下代码:

//countryId is an integer, searchCity() expects two String parameters
loadCity(countryName , countryId + "");

如果我改变(我被迫这样做)这样的电话,它会有什么不同吗

loadCity(countryName, String.valueOf(countryId));

或者,

loadCity(countryName, Integer.toString(countryId));

这会对性能有什么影响吗?

5 个答案:

答案 0 :(得分:2)

我认为主要区别在于可读性。这里的微型长凳没用。恕我直言String#valueOf读得最好。

答案 1 :(得分:2)

对于您给出的示例,答案实际上取决于您使用的“整数”的类型。

loadCity(countryName , countryId + "");

对于Integer对象,这与以下内容相同:

loadCity(countryName, countryId.toString() + "");

对于int原语,此代码与以下内容相同:

loadCity(countryName, String.valueOf(countryId) + "");

在任何一种情况下,正如ArjunShankar指出的那样,编译器很可能无论如何都优化了你的代码。所以,如果你的问题是“我会回去并重构我的所有代码吗?”,那么我会说“不要冒这个小东西”。但是在未来使用更传统的方法来避免投票。

答案 2 :(得分:1)

String.valueOf

From the docs

“表示正好是一个参数的Integer.toString方法返回的表示。”

我会使用String.valueOf因为你可以使用它而不仅仅是整数,即你不必知道你是否有int,double,bool等....

答案 3 :(得分:0)

他们是一样的......因为  方法String.valueOf(int i)隐式调用Integer.toString(i,10);

答案 4 :(得分:0)

对这两种方法的搜索告诉我所有这些都是等价的:

    String.valueOf(countryId) 
    Integer.toString(countryId) 
    countryId.toString() //Only if countryId is an Integer

因为他们都打来电话:

    Integer.toString(countryId, 10) 

唯一的区别是如果你想使用不同的基数,即:

   Integer.toString(countryId, radix)

我个人认为countryId.toString()在使用Integer时读得更好。否则Integer.toString(countryId)是要走的路。但这只是我个人的意见。在性能方面,您应该使用Integer.toString(countryId, 10)

我认为将一个空字符串添加到int以将其转换为String是一种不好的做法。