當(dāng)對(duì)需要對(duì)字符串進(jìn)行修改的時(shí)候杯矩,需要使用StringBuffer和StringBuilder類项炼。
和String類不同的是,StringBuffer和StringBuilder類的對(duì)象能夠被多次的修改尖飞,并且不產(chǎn)生新的對(duì)象戈轿。
兩者的區(qū)別:
(1)StringBuilder類在Java 5中被提出凌受。StringBuffer一直存在
(2)StringBuffer中的大部分方法被synchronized修飾,表示線程同步思杯,同一時(shí)間只允許一個(gè)線程對(duì)其進(jìn)行操作胜蛉。所以說(shuō)它是線程安全的。在多線程程序中一般使用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)將指定的類型參數(shù)以字符串形式追加到此字符序列嘲碱。
2. public insert(int offset type i) offset為插入角標(biāo)金砍,將type類型參數(shù)以字符串表示形式插入此序列中。
(2)刪
public delete(int start, int end)移除此序列的子字符串中的字符麦锯。
start和end為需要?jiǎng)h除的字符串首末角標(biāo)
(3)改
replace(int start, int end, String str)使用給定 String中的字符替換此序列的子字符串中的字符恕稠。
void setCharAt(int index, char ch)將給定索引處的字符設(shè)置為 ch
。
(4)查
char charAt(int index)返回此序列中指定索引處的 char值扶欣。
(5)反轉(zhuǎn)
public StringBuffer reverse() 將此字符序列用其反轉(zhuǎn)形式取代鹅巍。
注意:以上方法均不返回新的對(duì)象。
(6)返回內(nèi)存為Buffer/builder開辟的空間:
int capacity()返回當(dāng)前容量宵蛀。
(7)返回字符串的長(zhǎng)度
int length() 與(6)不同哦
(8)String substring()獲取子字符串
String substring(int start)返回一個(gè)新的 String昆著,從start索引位置開始之后的剩余字符串。
String substring(int start, int end)返回一個(gè)新的 String术陶,從start索引到end索引位置之間的字符串凑懂。
注意: substring方法返回一個(gè)新的字符串對(duì)象