1

对这是否会被否决或关闭没有信心......我需要对此的专家意见。

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

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

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

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

或者,

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

这会对性能产生任何影响吗?

4

5 回答 5

2

我想说主要的区别是可读性。这里的微基准没有用。恕我直言String#valueOf,读得最好。

于 2012-04-06T13:09:11.437 回答
2

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

loadCity(countryName , countryId + "");

对于一个Integer对象,这相当于:

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

而对于int原语,此代码等效于:

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

无论哪种情况,正如 ArjunShankar 指出的那样,编译器很有可能已经优化了您的代码。所以如果你的问题是“我要回去重构我所有的代码吗?”,那么我会说“不要为小事操心”。但在未来使用更传统的方法来避免反对票。

于 2012-04-06T13:10:13.023 回答
1

文档String.valueOf

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

我会使用String.valueOf它,因为你可以在更多的整数上使用它,即你不必知道你是否有一个 int、double、bool 等......

于 2012-04-06T13:08:31.917 回答
0

它们是相同的......因为方法 String.valueOf(int i) 隐式调用 Integer.toString(i, 10);

于 2012-04-06T13:14:27.457 回答
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.toString(countryId)就是要走的路。但这只是我个人的看法。性能方面,您应该使用Integer.toString(countryId, 10).

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

于 2012-04-06T13:16:21.423 回答