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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

String、StringBuilder和StringBuffer的区别和用法

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

分別使用使用這三種來拼接字符串,對比各自損耗的時間:
經過測試:

package com.test;public class Main{public static void main(String[] args){testString();testStringBuffer();testStringBuilder();}private static void testStringBuilder() {long begin = System.currentTimeMillis();StringBuilder str = new StringBuilder("");for (int i = 0; i < 30000; i++) {str.append(i);}long end = System.currentTimeMillis();long time = end - begin;System.out.println("-------------StringBuilder性能快--------------");System.out.println(time);}private static void testStringBuffer() {long begin = System.currentTimeMillis();StringBuffer str = new StringBuffer("");for (int i = 0; i < 30000; i++) {str.append(i);}long end = System.currentTimeMillis();long time = end - begin;System.out.println("------------StringBuffer安全的---------------");System.out.println(time);}//String 做做字符串拼接的時候,性能極低,每次拼接的時候對象改變public static void testString(){long begin = System.currentTimeMillis();String str = ""; /* for (int i = 0; i < 30000; i++) {str += i;}*/for(Integer i =0; i< 30000; i++){str += i.toString();}long end = System.currentTimeMillis();long time = end - begin;System.out.println("-----------String----------------");System.out.println(time);} }

結論:以后拼接字符串,統統使用StringBuffer/StringBuilder,不要使用String。

String和StringBuilder以及StringBuffer的區別:
StringBuffer和StringBuilder都表示可變的字符串,功能方法都是相同的。

唯一的區別(建議使用StringBuilder):
StringBuffer:StringBuffer中的方法都使用synchronized修飾符,表示同步的在多線程并發的時候可以保證線程安全,保證線程安全的時候,性能(速度)較低。
StringBuilder:StringBuilder沒有使用synchronized修飾符,不安全,但性能高。
StringBuilder sb = new StringBuilder ()等價于…new StringBuilder(16)(API可見..) 使用StringBUilder無參數的構造器,在底層創建一個長度為16的char數組:
char[] value = new char[16];
此時該數組只能存儲16字符,如果超過了,得自動擴容:
自動擴容(創建長度更大得數組,再把之前得數組拷貝到新數組)
此時性能極低,一般得,我們事先知道大概需要存儲多少字符,在構造器中就應該設置。
//創建長度為80得字符數組
new StringBuilder(80);

package com.test;public class M1001{public static void main(String[] args) {StringBuilder sb1 = new StringBuilder(16);//鏈式編程sb1.append("A").append("B");System.out.println(sb1);//之所以可以用鏈式編程因為返回的是this指針,例如oxx()new M1001().ooxx().ooxx().ooxx();System.out.println("----------刪除最后一個字符-----------------");String str ="abcdefg";StringBuffer newString = new StringBuffer(str).deleteCharAt(str.length()-1);System.out.println(newString);System.out.println("--------字符串反轉方法-------------------");System.out.println(new StringBuffer("asdf").reverse());}public M1001 ooxx(){return this;} } 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

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

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