Java中的String、StringBuilder、StringBuffer
Java中的String是個永恒的話題,直說我想說的。
1、String 是永遠不會變的,傳遞的引用是一個Copy,無論刮風下雨,它都在自己的小窩里呆的好好的。
2、重載“+”和StringBuilder
連接字符串可以通過“+”,也可以通過StringBuilder中的append();有時候為了偷懶就直接 用“+”,但是糾結心,總在覺得是不是會影響性能。先對此進行說明:
??通過jvm反應的字節碼,當我們使用“+”實現連接字符串時,JVM會自動對其進行優化工作,引入StringBuilder進行連接字符串。所以對于簡單的字符串連接,可以依靠JVM直接使用“+”進行連接字符串,但這個盡限于簡單的拼接(當然難的你也可以用,只是。。。你懂的),對于復雜的字符串拼接,尤其是涉及到有循環的,建議使用StringBuilder,因為在循環中是“+”,在JVM進行實現的時候,會重復的創建StringBuilder對象。StringBuilder可以是使代碼簡短,簡單,而且只會生成一個StringBuilder對象,而且還允許你預先指定大小(如果你已經大概知道最終的字符串的長度,預先指定大小,可以避免對此重新分配緩沖區)。
3、StringBuilder和StringBuffer
? StringBuffer是線程安全的,因此開銷大些,如果不是涉及到線程安全問題,建議使用StringBuilder,因為它更高效;
!!!要盡量杜絕使用append(a+","+c);因為這個JVM會再為你創建一個StringBuilder對象處理括號內的字符串的拼接工作。
下邊提供一個StingBuilder的簡單使用例子
import java.util.Random;public class TestStringBuilder {public static Random rand = new Random();public String toString(){StringBuilder result = new StringBuilder("[");for (int i = 0; i < 25; i++) {result.append(rand.nextInt(100));result.append(", ");}//去除最后的逗號和空格result.delete(result.length()-2, result.length());result.append("]");return result.toString() ;}public static void main(String[] args) {TestStringBuilder ts = new TestStringBuilder();System.out.println(ts);} }
?
轉載于:https://www.cnblogs.com/xiaotao726/p/4478071.html
總結
以上是生活随笔為你收集整理的Java中的String、StringBuilder、StringBuffer的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 详说 Cookie, LocalStor
- 下一篇: 关于标签系统的又一点想法。