2012-06-04 35 views
2

可能重複:
when to use StringBuilder in javaStringBuilders應該總是用於字符串操作嗎?

如果不是這些作品的代碼,這是更好的,爲什麼

public String backAround(String str) { 
    int len = str.length(); 
    StringBuilder sb = new StringBuilder(str); 
    char chEnd = sb.charAt(len-1); 
    if(len > 0){ 
    sb = sb.append(chEnd); 
    sb= sb.insert(0,chEnd); 

    str= sb.toString(); 
    return str; 

    }else{ return str;} 
} 

public String backAround(String str) { 
    // Get the last char 
    String back = str.substring(str.length()-1, str.length()); 
    return back + str + back; 
} 
+3

http:// stackoverflow。COM /問題/ 4645020 /時使用的,StringBuilder的 - 在的Java –

回答

6

如果您只是「將幾個元素粘在一起」,就像在backAround()方法中那樣,您也可以使用+符號。編譯器會將它轉換爲合適的StringBuilder.append(),所以爲什麼還要打擾拼寫。

明確使用StringBuilder的想法是,原則上可以手動優化元素被附加到字符串的精確度,包括設置初始緩衝區容量並確保您不會意外創建不必要的中間String對象在編譯器可能無法預測這些事情的情況下。

所以,基本上,明確地使用一個StringBuilder時,有一些稍微複雜的邏輯決定什麼要附加到字符串。例如,如果您將某些東西添加到循環中,或者附加內容取決於不同點處的各種條件。另一種可能使用StringBuilder的情況是,如果字符串需要用各種方法構建,例如:然後可以將StringBuilder傳遞給不同的方法並要求它們附加各種元素。

P.S.我應該說StringBuilder爲您帶來了更多的編輯能力(例如,您可以設置其長度),並且由於Appendable接口的存在,您實際上可以創建更多的通用方法,該方法可以追加到StringBuilder或例如一個StringWriter。但這些都是邊緣情況,我會提交。

1

這真的取決於你想要做什麼。在你的情況下,你似乎想要取一個字符串並把最後一個字母添加到前面,然後再添加到最後。對於這個我可能會這樣做:

public String manipulate(String string) 
{ 
    char c = string.charAt(string.length); 
    return c + string + c; 
} 

在這種情況下,你不必使用StringBuilder。有些情況下StringBuilder類是有用的。這裏有一些事情是很難做的一個字符串,StringBuilder的可以這樣做:

  • 指數
  • 指數
  • 在追加字符在刪除字符獲取特定序列的指數
  • 和更多更多

,如果你想看到的StringBuilder的文檔:

String Builder

我希望這能幫助你!