String
創(chuàng)建的String類字符串其長度是固定的,雖然使用“+”可以達到附加新字符或字符串的目的,但會產生一個新的String實例,會在內存中創(chuàng)建新的字符串對象。
StringBuffer、StringBuilder
兩個類都是可變的字符序列的類,大大提高了頻繁增加字符串的效率。StringBuffer支持并發(fā)操作,線性安全;StringBuilder不支持并發(fā)操作,非線性安全,但在單線程中的性能比StringBuffer高。
常用方法
修改指定字符
public void setCharAt(int index,char ch) ? ? 將給定索引處的字符修改為ch;
插入字符串
insert(int offset,String str) ? ? 將字符串插入此字符序列中
字符串反序
reverse() ? ? 將字符串反序輸出
刪除子字符串
delete(int start,int end) ? 移除此序列的子字符串中的字符。注:左閉右開
追加字符串
append()
三者之間的轉換
String<-->StringBuffer/StringBuilder: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?String str=“String”;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?StringBuffer/StringBuilder sb=new StringBuffer/StringBuilder(str);
? ? str=sb.toString();
StringBuffer<-->StringBuilder
? ?StringBuffer sbf=new StringBuffer(sbr.toString()); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?StringBuilder sbr=new StringBuilder(sbf.toString()); ? ?
適用場景
(1)操作少、數據少,用String。
(2)單線程、操作多、數據多,用StringBuilder。
(3)多線程、操作多、數據多,用StringBuffer。