常用的方法緩衝
回答
當您需要連接多個字符串文字一起,那麼它可能會更好,爲您使用StringBuffer
對象,當你與拼接完成,使用toString()
方法把它變成一個String
對象。
編輯:請忽略下面
的線路中的字符串池中的下面實例6個字符串對象理論上。
String a = "A" + "B" + "C" + "D" + "E";
*幾乎所有的情況下[[StringBuilder]](http://download.oracle.com/javase/7/docs/api/java/lang/StringBuilder.html)應該通過'StringBuffer'使用:它提供了完全相同的API,並且僅缺少同步(無論如何,這在'StringBuffer'上幾乎不會有用)。 –
注意謝謝! –
我拒絕了StringBuilder應該被使用的想法*除了*在大型模板處理等特殊情況下。如果您的代碼中包含「+」,請使用最清楚的內容。 Java編譯器實際上可能會爲您使用StringBuilder! – 2011-08-24 09:04:07
最大的區別是,String
是不可改變的,StringBuffer
是可變的。
最明顯的共享的方法是通過兩個String
和StringBuffer
實現的接口指定的那些(以及StringBuilder
):Appendable
。它提供了3種附加其他值的方法。
StringBuffer
可讓您更快地加入字符串。例如,下列代碼:
String s = "Initial string ";
for (int i = 0; i < 100; i++) {
s = s + i;
}
在每個迭代上創建表示整數i
串和比還創建的s
和i
連接在一起的新字符串並移動s
參照該新對象。它不會通過擴展其內容來重複使用相同的s
對象。
StringBuffer
可讓您更有效地追加字符串。還有一個叫做StringBuilder
的新版本,它基本上是StringBuffer
,沒有同步。
上StringBuffer
JavaDoc前幾行給出一個不錯的答案:
一個線程安全的,字符的可變序列。字符串緩衝區就像
String
,但可以修改。
- 1. 雙緩衝方法之間的區別
- 2. 緩衝ArrayIndexOutOfBoundsException異常錯誤
- 3. VueJS 2鍵盤緩衝回調方法
- 4. 是否緩衝了jtextarea.settext()方法?
- 5. Java.io從非緩衝字節1獲取緩衝字符流的兩種方法
- 6. RGBA緩衝乘法(OpenGL的)
- 7. 使用替代方法的循環緩衝區增量
- 8. Java - 添加方法與異常衝突
- 9. 的Python 3:無緩衝VS緩衝流
- 10. 如何追加而不使用緩衝區或追加方法?
- 11. 堆/緩衝區溢出異常
- 12. 緩衝區下溢異常java
- 13. 常見緩衝區溢出攻擊
- 14. 整個緩衝區initalization導致異常
- 15. c# - NAudio緩衝區全部異常
- 16. 按名稱排序在ECB的方法提出的方法緩衝
- 17. 常量緩衝區中的紋理變換矩陣無法正常工作
- 18. fgets的沖洗緩衝區
- 19. Perl的打印緩衝衝
- 20. 啓用雙緩衝
- 21. 的ActionScript:緩衝
- 22. 如何確定緩衝區大小的BufferedOutputStream的write方法
- 23. 聲明特定大小的緩衝區的算法方式
- 24. 簡單的方法來改變緩衝區的父目錄?
- 25. 緩衝閱讀器無法通過其他方法訪問
- 26. Z緩衝通常比Painter算法更快嗎?
- 27. 緩衝
- 28. 最快的方式找到緩衝
- 29. 以緩衝流的方式回覆HTTPResponse
- 30. OpenGL中,如何使用深度緩存中從幀緩衝器照常深度緩衝器
嗯,這裏有很多資源,它描述了它們之間的差異,你可以很容易地看到常見的方法。那麼,你爲什麼在這裏問這個問題? –
爲什麼不在[API](http://download.oracle.com/javase/6/docs/api/)中自己查看? – adarshr
並快速回答你的問題:字符串是不可變的,而StringBuffer是可變的。當你有複雜的字符串,你不能單步構建,你使用轉換爲字符串的StringBuffer。當使用'+'連接字符串時,Java編譯器會將其轉換爲引擎下的StringBuffer調用。 –