簡體   English   中英

String concatenation使用concat運算符(+)或String.format()方法

[英]String Concatenation using concat operator (+) or String.format() method

哪一個更適合串聯連接

如果我想從一串字符串變量(如str1和str2)構建一個字符串,哪一個會更好一個?

  1. String Concat運算符

String str="This the String1 " + str1 + " merged with Sting2 " + str2;

  1. 字符串格式方法

String str=String.format("This the String1 %s merged with Sting2 %s", str1 , str2);

我認為第二個會更好,因為第一個會受到很多字符串創建的影響。

如果我錯了,請糾正我? 並提供相同的反饋

第一個實際上不會創建任何額外的字符串。 它將被編譯成類似於:

String str = new StringBuilder("This the String1 ")
    .append(str1)
    .append(" merged with Sting2 ")
    .append(str2)
    .toString();

鑒於第二種形式需要解析格式字符串,如果第一種形式實際上運行得更快,我不會感到驚訝。

但是 ,除非你有基准來證明這確實是一些運行速度太慢的代碼,否則你不應該太擔心效率。 你應該更擔心可讀性。 您覺得哪些代碼更具可讀性?

第一個不會受到字符串創建的影響。 因為一切都是靜態的,所以創建一個StringBuilder,附加所有部分,然后調用toString。 它將比第二個更有效,后者必須解析格式字符串。 但這可能不是你會失去或獲得很多表現的地方。

在循環中執行字符串連接時會創建大量臨時對象:

 for (String elem : someList) {
     s += elem;
 }

這將在每次迭代時創建一個StringBuilder和一個String對象。

這取決於您連接的字符串數量。 對於最多5(ish),它可能無關緊要。

如果您真的需要這種優化,請測量您的特定情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM