2014-12-07 78 views
2

這些代碼塊之間有什麼區別 - 性能或內存或其他方面有什麼區別?格式化字符串和簡單字符串之間的區別

,第一碼:

String name = "Jack"; 
String familyName = "Hunter"; 

String result = String.format("Your name is %s %s",name, familyName); 

和第二代碼:

String name = "Jack"; 
String familyName = "Hunter"; 

String result = "Your name is " + name + " " + familyName; 

感謝您的關注;-)

+0

這裏有一些結果:[如果性能很重要,我應該使用Java的String.format()嗎?](http://stackoverflow.com/questions/513600/should-i-use-javas-string-format-如果性能是重要的) – Obicere 2014-12-07 07:40:06

回答

2

有一個在它產生的輸出方面沒有差別。在每種情況下,result變量將具有相同的內容。

String.format()在那裏,所以你可以做更強大的格式,包括指定浮點數的小數位數等。

我預計String.format()版本會相對較慢,因爲它的功能更強大,並且必須在執行與第二版本基本相同的操作之前檢查格式字符串的內容。換句話說,它需要花一些時間來研究你想要做什麼,而在第二個版本中,編譯器可以自己完成。

但是,實際上,出於性能方面的考慮,選擇其中一個片段作爲其他優化片段看起來就像是幾乎永遠不會有回報的微型優化。除非你有明確的性能需求(例如,這對性能至關重要的緊密循環運行),你應該選擇一個更具可讀性的。

+0

公平地說,第二個代碼的性能應該快很多。第二個代碼將被改爲使用'StringBuilder',所以性能是相同的。 – Obicere 2014-12-07 07:45:10

+0

@Obicere你的意思是說編譯器會在內部使用'StringBuilder'來連接一串串'String's嗎?這似乎是一個明顯的優化,雖然我不知道編譯器做到了。 – 2014-12-07 07:46:48

+0

是的!這只是Java編譯器的一大優點。 – Obicere 2014-12-07 07:48:36

相關問題