![](/img/trans.png)
[英]Integer.toString(int i) vs String.valueOf(int i)
[英]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.