簡體   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