2017-07-29 49 views
2

我想知道兩種方法的區別。有一些我現在正在工作的舊代碼,他們將primitive值設置爲String值,並與一個空字符串""連接。String.valueOf(someVar)vs(「」+ someVar)

obj.setSomeString("" + primitiveVariable); 

但在這個環節Size of empty Java String它說,如果要創建爲每個實例單獨空字符串,那麼很明顯,這將需要更多的內存。

所以我想到在String類中使用valueOf方法。我檢查了文檔String.valueOf()它說如果參數爲空,那麼一個字符串等於「null」;否則,返回obj.toString()的值。

所以哪一個是更好的方式

  1. obj.setSomeString("" + primitiveVariable);
  2. obj.setSomeString(String.valueOf(primitiveVariable));

中的哪一個具有尺寸大於600 List迭代中完成上述過程,預計未來會增加。

+0

你誤會了鏈接答案的要點。你是**不是**創建一個新的實例。 – luk2302

+0

但是每當我們編寫一個空字符串並且相應的類被執行時,會有一個爲該空字符串創建的String對象? –

+0

@ luk2302是的。這就是回報。 –

回答

2

當你做""是不會創建一個對象。它將創建一個字符串文字。 There is a differencHow can a string be initialized using " "?)。

來到您的實際問題,

String concatenation docs

Java語言提供對字符串連接運算符(+)的特殊支持,以及對其他對象的字符串轉換。字符串連接通過StringBuilder(或StringBuffer)類及其append方法實現。

因此,你非常不情願地創建StringBuilder對象,然後給出另一個String對象。

但是valueOf直接給你一個String對象。只是爲了它。

除了表現,只是想一般。爲什麼你要連接空字符串,實際上當你想要將int轉換爲字符串時:)

2

問:那麼,哪一個是更好的辦法

A. obj.setSomeString(String.valueOf(primitiveVariable))通常是更好的辦法。它更整潔,更國內。這將primitiveVariable的值輸出爲String,而另一個則將其輸出爲int值。第二種方式更多的是「黑客」,組織性較差。 另一種方法是使用Integer.toString(primitiveVariable),它基本上與String.valueOf相同。

也期待在this postthis one too

相關問題