StringBuffer的常用操作方法
StringBuilder
一个可变的字符序列。此类提供一个与StringBuffer兼容的API,但不保证同步。该类被设计用作StringBuffer
的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普通)。如果可能,建议优先采用该类,
因为在大部分实现中,StringBuilder
比StringBuffer
快。
因为有(synchronized)修饰,线程安全
StringBuilder:
无(synchronized)修饰,线程不安全(多线程时会出问题)
注:synchronized 关键字表示同步
StringBuffer小例子
public class StringBuffer01 {
public static void main(String[] args) {
String s = "明明";
//默认字符数组的大小是16
//扩展方式:(原来的长度+1)*2
//如果我们可以确定整个长度,可以调用带初始容量的构造方法
StringBuffer sb = new StringBuffer();//生命StringBuffer方法
sb.append("今天去奶奶家、");//拼接字符串
sb.append("明天去舅舅家,");
sb.append("后天自己在家里玩");
System.out.println(s+sb);//输出:明明今天去奶奶家、明天去舅舅家,后天自己在家里玩
//删除指定位置的字符串,包含开始位置,不包含结束位置
sb.delete(19, 21 );
System.out.println(sb.toString());//今天去奶奶家、明天去舅舅家,后天自己在玩
//查询去第一次出现的位置
int index = sb.indexOf("去");
System.out.println("去的位置是:"+index);//去的位置是:2(从0开始数)
//插入方法
sb.insert(19, "家里");
System.out.println(sb);//今天去奶奶家、明天去舅舅家,后天自己在家里玩
//替换方法
sb.replace(0, 2, "现在");
System.out.println(sb);//现在去奶奶家、明天去舅舅家,后天自己在家里玩
//反转
sb.reverse();
System.out.println(sb);//玩里家在己自天后,家舅舅去天明、家奶奶去在现
//字符串截取
String s1 = sb.substring(9);
System.out.println(s1);//家舅舅去天明、家奶奶去在现
String s2 = sb.substring(0, 7);
System.out.println(s2);//玩里家在己自天
//StringBuilder:synchronized 关键字表示同步(多线程时会出问题)
/*
* 单线程访问时使用,效率更高,线程不安全
* StringBuffer:多线程访问时使用,效率较低,线程安全(JDK1.5后新增加的一个类)
*/
StringBuilder sb2 = new StringBuilder();
}
}