當對需要對字符串進行修改的時候,需要使用StringBuffer和StringBuilder類。
和String類不同的是,StringBuffer和StringBuilder類的對象能夠被多次的修改,并且不產生新的對象。
兩者的區別:
(1)StringBuilder類在Java 5中被提出。StringBuffer一直存在
(2)StringBuffer中的大部分方法被synchronized修飾,表示線程同步,同一時間只允許一個線程對其進行操作。所以說它是線程安全的。在多線程程序中一般使用StringBuffer。
(3)StringBuilder與StringBuffer不同,它不是線程安全的,但是它的效率卻比StringBuffer要高,所以一般在單線程的程序中使用StringBuilder,注意在java 5之前沒有StringBuilder,因此不可以在5.0之前使用;
StringBuffer str = new StringBuffer("string");
str.append("aa");
常用方法:
(1)增
1. public StringBuffer append(type s)將指定的類型參數以字符串形式追加到此字符序列。
2. public insert(int offset type i) offset為插入角標,將type類型參數以字符串表示形式插入此序列中。
(2)刪
public delete(int start, int end)移除此序列的子字符串中的字符。
start和end為需要刪除的字符串首末角標
(3)改
replace(int start, int end, String str)使用給定 String中的字符替換此序列的子字符串中的字符。
void setCharAt(int index, char ch)將給定索引處的字符設置為 ch
。
(4)查
char charAt(int index)返回此序列中指定索引處的 char值。
(5)反轉
public StringBuffer reverse() 將此字符序列用其反轉形式取代。
注意:以上方法均不返回新的對象。
(6)返回內存為Buffer/builder開辟的空間:
int capacity()返回當前容量。
(7)返回字符串的長度
int length() 與(6)不同哦
(8)String substring()獲取子字符串
String substring(int start)返回一個新的 String,從start索引位置開始之后的剩余字符串。
String substring(int start, int end)返回一個新的 String,從start索引到end索引位置之間的字符串。
注意: substring方法返回一個新的字符串對象