1。使用運算子 ( ) 連接字串:
使用運算子連接字串對於少量連接來說很方便,但由於字串的不可變性,在大規模操作時會出現效能問題。
每次建立新字串時,都會複製所有先前字串的內容,從而導致大型串聯的時間成二次方。
不正確的範例(與 重複連接):
public String criaFatura(List<Item> itens) { String fatura = ""; for (Item item : itens) { fatura += item.toString(); // ineficiente para grandes listas } return fatura; }
2。使用 StringBuilder 提高效能:
不使用 ,而是使用 StringBuilder,它允許您有效率地修改字串,根據需要動態分配記憶體。
使用 StringBuilder 的串聯時間是線性的,這顯著提高了效能。
正確範例(使用 StringBuilder):
public String criaFatura(List<Item> itens) { StringBuilder fatura = new StringBuilder(itens.size() * 80); // pré-alocação for (Item item : itens) { fatura.append(item.toString()); } return fatura.toString(); }
3。性能對比:
即使在 Java 6 進行了改進以優化運算符之後,使用 StringBuilder 仍然更有效率。在測試機上,在 100 個項目的場景中,使用 StringBuilder 比操作符快 6.5 倍。
沒有預先分配的最佳化範例:
public String criaFatura(List<Item> itens) { StringBuilder fatura = new StringBuilder(); // sem pré-alocação for (Item item : itens) { fatura.append(item.toString()); } return fatura.toString(); }
4。這個故事的寓意:
不要用它來連接許多字串。隨著串聯數量的增加,效能很快就會變得不可接受。
使用 StringBuilder.append 或字元數組等替代方案來進行大量串聯。
5。其他選擇:
除了 StringBuilder 之外,您還可以考慮使用字元陣列進行大規模處理或更有效地組合字串,特別是在需要更精細地控制效能時。
結論:
使用 StringBuilder 高效連接字串。
避免在循環或大量字串中使用運算符,因為隨著連接數量的增加,效能會顯著下降。
書中的範例:
以上是項目 注意字串連接效能的詳細內容。更多資訊請關注PHP中文網其他相關文章!