2010-11-23 41 views
9

我聽說編譯器(或者它是JVM?)會自動使用StringBuilder進行一些字符串連接。什麼時候明確宣佈一個?我不需要一個StringBuffer來保證線程安全。什麼時候StringBuffer/StringBuilder沒有被編譯器隱式使用?

謝謝。

+1

可能的重複[Java Compiler在一行中看到很多字符串連接時會發生什麼?](http://stackoverflow.com/questions/1296571/what-happens-when-java-compiler-sees-many-string-串聯在一行) – 2010-11-23 23:37:26

+1

注意:其中將不使用StringBuilder的一種情況是在編譯時可串聯字符串。在這種情況下,它只產生一個單獨的字符串(沒有StringBuilder) – 2010-11-24 09:28:08

回答

14

編譯器將自動使用它來使用「+」進行任何字符串連接。

如果要在循環中連接,通常會明確使用它。例如:

StringBuilder builder = new StringBuilder(); 
for (String name : names) 
{ 
    builder.append(name); 
    builder.append(", "); 
} 
if (builder.length() > 0) 
{ 
    builder.setLength(builder.length() - 2); 
} 
System.out.println("Names: " + builder); 

另一種情況是,你想在多個方法來建立一個字符串,或可能conditionalise建築的一些位。基本上,如果你沒有在單個語句中編譯字符串(編譯器可以幫助你),你至少應該考慮使用StringBuilder

相關問題