繁体   English   中英

String.valueOf(int), `+` string operator 和 Integer.toString(int) 的区别

[英]difference between String.valueOf(int) , `+` string operator and Integer.toString(int)

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

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

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

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

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

要么,

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

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

我会说主要区别是可读性 这里的微长凳没有用。 恕我直言, String#valueOf读起来最好。

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

loadCity(countryName , countryId + "");

对于Integer object 这等同于:

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

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

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

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

来自String.valueOf 的文档

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

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

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

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

    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)是通往 go 的方式。但这只是我个人的意见。 在性能方面,您应该使用Integer.toString(countryId, 10)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM