9
我聽說編譯器(或者它是JVM?)會自動使用StringBuilder進行一些字符串連接。什麼時候明確宣佈一個?我不需要一個StringBuffer來保證線程安全。什麼時候StringBuffer/StringBuilder沒有被編譯器隱式使用?
謝謝。
我聽說編譯器(或者它是JVM?)會自動使用StringBuilder進行一些字符串連接。什麼時候明確宣佈一個?我不需要一個StringBuffer來保證線程安全。什麼時候StringBuffer/StringBuilder沒有被編譯器隱式使用?
謝謝。
編譯器將自動使用它來使用「+」進行任何字符串連接。
如果要在循環中連接,通常會明確使用它。例如:
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
。
可能的重複[Java Compiler在一行中看到很多字符串連接時會發生什麼?](http://stackoverflow.com/questions/1296571/what-happens-when-java-compiler-sees-many-string-串聯在一行) – 2010-11-23 23:37:26
注意:其中將不使用StringBuilder的一種情況是在編譯時可串聯字符串。在這種情況下,它只產生一個單獨的字符串(沒有StringBuilder) – 2010-11-24 09:28:08