91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中StringBuffer和StringBuilder_動力節點Java學院整理

發布時間:2020-09-16 11:44:19 來源:腳本之家 閱讀:183 作者:mrr 欄目:編程語言

下面先給大家介紹下String、StringBuffer、StringBuilder區別,具體詳情如下所示:

StringBuffer、StringBuilder和String一樣,也用來代表字符串。String類是不可變類,任何對String的改變都 會引發新的String對象的生成;StringBuffer則是可變類,任何對它所指代的字符串的改變都不會產生新的對象。既然可變和不可變都有了,為何還有一個StringBuilder呢?相信初期的你,在進行append時,一般都會選擇StringBuffer吧!

先說一下集合的故事,HashTable是線程安全的,很多方法都是synchronized方法,而HashMap不是線程安全的,但其在單線程程序中的性能比HashTable要高。StringBuffer和StringBuilder類的區別也是如此,他們的原理和操作基本相同,區別在于StringBufferd支持并發操作,線性安全的,適 合多線程中使用。StringBuilder不支持并發操作,線性不安全的,不適合多線程中使用。新引入的StringBuilder類不是線程安全的,但其在單線程中的性能比StringBuffer高。

接下來,我直接貼上測試過程和結果的代碼,一目了然:

 public class StringTest { 
   public static String BASEINFO = "Mr.Y"; 
   public static final int COUNT = 2000000; 
   /** 
   * 執行一項String賦值測試 
   */ 
   public static void doStringTest() { 
     String str = new String(BASEINFO); 
     long starttime = System.currentTimeMillis(); 
     for (int i = 0; i < COUNT / 100; i++) { 
       str = str + "miss"; 
     } 
     long endtime = System.currentTimeMillis(); 
     System.out.println((endtime - starttime) 
         + " millis has costed when used String."); 
   } 
   /** 
   * 執行一項StringBuffer賦值測試 
   */ 
   public static void doStringBufferTest() { 
     StringBuffer sb = new StringBuffer(BASEINFO); 
     long starttime = System.currentTimeMillis(); 
     for (int i = 0; i < COUNT; i++) { 
       sb = sb.append("miss"); 
     } 
     long endtime = System.currentTimeMillis(); 
     System.out.println((endtime - starttime) 
         + " millis has costed when used StringBuffer."); 
   } 
   /** 
   * 執行一項StringBuilder賦值測試 
   */ 
   public static void doStringBuilderTest() { 
     StringBuilder sb = new StringBuilder(BASEINFO); 
     long starttime = System.currentTimeMillis(); 
     for (int i = 0; i < COUNT; i++) { 
       sb = sb.append("miss"); 
     } 
     long endtime = System.currentTimeMillis(); 
     System.out.println((endtime - starttime) 
         + " millis has costed when used StringBuilder."); 
   } 
   /** 
   * 測試StringBuffer遍歷賦值結果 
   * 
   * @param mlist 
   */ 
   public static void doStringBufferListTest(List<String> mlist) { 
     StringBuffer sb = new StringBuffer(); 
     long starttime = System.currentTimeMillis(); 
     for (String string : mlist) { 
       sb.append(string); 
     } 
     long endtime = System.currentTimeMillis(); 
     System.out.println(sb.toString() + "buffer cost:" 
         + (endtime - starttime) + " millis"); 
   } 
   /** 
   * 測試StringBuilder迭代賦值結果 
   * 
   * @param mlist 
   */ 
   public static void doStringBuilderListTest(List<String> mlist) { 
     StringBuilder sb = new StringBuilder(); 
     long starttime = System.currentTimeMillis(); 
     for (Iterator<String> iterator = mlist.iterator(); iterator.hasNext();) { 
       sb.append(iterator.next()); 
     } 
     long endtime = System.currentTimeMillis(); 
     System.out.println(sb.toString() + "builder cost:" 
         + (endtime - starttime) + " millis"); 
   } 
   public static void main(String[] args) { 
     doStringTest(); 
     doStringBufferTest(); 
     doStringBuilderTest();   
     List<String> list = new ArrayList<String>(); 
     list.add(" I "); 
     list.add(" like "); 
     list.add(" BeiJing "); 
     list.add(" tian "); 
     list.add(" an "); 
     list.add(" men "); 
     list.add(" . ");   
     doStringBufferListTest(list); 
     doStringBuilderListTest(list); 
   } 
 } 

看一下執行結果:

2711 millis has costed when used String.
211 millis has costed when used StringBuffer.
141 millis has costed when used StringBuilder.
 I  like  BeiJing  tian  an  men  . buffer cost:1 millis
 I  like  BeiJing  tian  an  men  . builder cost:0 millis

Java中StringBuffer和StringBuilder_動力節點Java學院整理

從上面的結果可以看出,不考慮多線程,采用String對象時(我把Count/100),執行時間比其他兩個都要高,而采用StringBuffer對象和采用StringBuilder對象的差別也比較明顯。由此可見,如果我們的程序是在單線程下運行,或者是不必考慮到線程同步問題,我們應該優先使用StringBuilder類;如果要保證線程安全,自然是StringBuffer。從后面List的測試結果可以看出,除了對多線程的支持不一樣外,這兩個類的使用方式和結果幾乎沒有任何差別。

以上所述是小編給大家介紹的Java中StringBuffer和StringBuilder_動力節點Java學院整理,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

澳门| 莱州市| 新巴尔虎左旗| 施秉县| 北安市| 普安县| 建始县| 连城县| 三亚市| 江口县| 齐齐哈尔市| 城固县| 清流县| 潞西市| 米脂县| 南宫市| 商洛市| 伊金霍洛旗| 湘潭县| 浠水县| 隆回县| 甘孜县| 来宾市| 涪陵区| 新和县| 邻水| 渝中区| 横山县| 正阳县| 汉寿县| 花莲县| 铜梁县| 侯马市| 会理县| 阿城市| 措美县| 阿尔山市| 武山县| 潮安县| 金昌市| 岢岚县|