[英]String Concatenation using concat operator (+) or String.format() method
哪一個更適合串聯連接
如果我想從一串字符串變量(如str1和str2)構建一個字符串,哪一個會更好一個?
String str="This the String1 " + str1 + " merged with Sting2 " + str2;
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.