標籤:line 拼接 size 頻繁 str ring append 可變 indexof
String、StringBuffer、StringBuilder都是java中的常用字串類 ,下面來看看三者之間的異同。
一、可變與不可變:
String:字串常量,不可變。StringBuffer、StringBuilder為可變字元序列,是可變的。
二、是否多安全執行緒:
String中的對象是不可變的,相當於常量,顯然安全執行緒。
StringBuffer:支援多安全執行緒。
StringBuilder:不支援多安全執行緒。
三、執行效率:
String、StringBuffer、StringBuilder用於字串拼接:String str1="asdfgh"; String str2="lkjhdsa";
方法一、
使用String:String str3=str1+str2; 效率最低。
方法二、
使用StringBuffer::str1.append(str2); //使用StringBuiffer的append()方法進行追加。 效率較高(由於其需要實現安全執行緒,故效率比StringBuilder低。)
方法三、
使用StringBuilder:str1.append(str2); //使用StringBuilder的append()方法進行追加。 效率最高 。(不用考慮安全執行緒問題,故執行效率最高)
總結:
一、如果要操作少量的資料,用String ;單線程操作大量資料,用StringBuilder ;多線程操作大量資料,用StringBuffer。
二、不要使用String類的"+"來進行頻繁的拼接,因為那樣的效能極差的,應該使用StringBuffer或StringBuilder類。
註:StringBuilder和StringBuffer都具有如下方法顯示對字串的增、刪、改、查功能。
增:insert();
刪:delete();
改:replace();
查:indexOf();
其具體用法可以參考java API文檔。
java中的String、StringBuffer、StringBuilder的區別