当对需要对字符串进行修改的时候,需要使用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方法返回一个新的字符串对象