日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

String, StringBuffer, StringBuilder之间的区别

發布時間:2024/7/19 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 String, StringBuffer, StringBuilder之间的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

String與StringBuffer/StringBuilder之間的主要區別

1.String對象不可變, 如果修改會重新創建一個對象, 然后把值保存進去. StringBuffer/StringBuilder對象是可變的.

2.String性能遠遠低于StringBuffer/StringBuilder

3.StringBuilder速度稍快于StringBuffer, 但與此帶來的缺陷是StringBuilder是線程不安全的, 而StringBuffer是線程安全的.

?

下面執行一段代碼來測試一下三者的運行時間

1 // 測試String StringBuffer StringBuilder 2 public class Test { 3 public static void main(String[] args) { 4 testString(); 5 testStringBuffer(); 6 testStringBuilder(); 7 } 8 9 // 2萬次為37097毫秒 10 public static void testString() { 11 String testStr = "abcdefghijklmnopqrstuvwxyz"; 12 long start = System.currentTimeMillis(); 13 String str = ""; 14 for (int i = 0; i < 20000; i++) { 15 str += testStr; 16 } 17 long end = System.currentTimeMillis(); 18 System.out.println(end-start); 19 } 20 21 // 20萬次為55毫秒 22 public static void testStringBuffer() { 23 String testStr = "abcdefghijklmnopqrstuvwxyz"; 24 long start = System.currentTimeMillis(); 25 StringBuffer sb = new StringBuffer(); 26 for (int i = 0; i < 200000; i++) { 27 sb.append(testStr); 28 } 29 long end = System.currentTimeMillis(); 30 System.out.println(end-start); 31 } 32 33 // 20萬次為34毫秒 34 public static void testStringBuilder() { 35 String testStr = "abcdefghijklmnopqrstuvwxyz"; 36 long start = System.currentTimeMillis(); 37 StringBuilder sb = new StringBuilder(); 38 for (int i = 0; i < 200000; i++) { 39 sb.append(testStr); 40 } 41 long end = System.currentTimeMillis(); 42 System.out.println(end-start); 43 } 44 }

發現 String和StringBuffer/StringBuilder之間的執行速度差別巨大, 而StringBuilder稍快于StringBuffer.(為了使StringBuffer和StringBuilder之間差距明顯一些, 我在這里循環了20萬次)

?

使用建議

操作少量數據 用String

字符串經常改變的情況下, 使用StringBuffer/StringBuilder

操作大量數據 ?單線程->StringBuilder 多線程->StringBuffer(兩者執行速度差異不大, 為了多線程安全問題, 建議使用StringBuffer)

?

?

?

?

轉載于:https://www.cnblogs.com/lwn007/p/7677623.html

總結

以上是生活随笔為你收集整理的String, StringBuffer, StringBuilder之间的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。