字符串缓冲类: 由于 String 是不可变的, 在需要频繁改变字符对象的情况下, 需要使用可变的字符串缓冲区类.
特点:
默认缓冲区的容量是 16
StringBuffer: 线程安全的所有的缓冲区操作方法都是同步的, 效率低.
一, 添加方法
StringBuffer("hcx") 在创建对象的时候赋值
append() 在缓冲区的尾部添加新的文本对象
insert() 在指定的下标位置添加新的文本对象
- StringBuffer sb = new StringBuffer("hcx");
- sb.append(true);
- sb.append('a');
- sb.append(97).append(98).append(new char[]{
- 'b','c'
- }); // 链式编程
- System.out.println(sb.toString());// 输出缓冲区的中文本数据 hcxtruea9798bc
- sb = new StringBuffer("hcx");
- sb.insert( 2, "java" );
- System.out.println( sb.toString() );//hcjavax
二, 查看方法
toString() 把字符串缓冲类的内容转成字符串返回.
indexOf(String str) 返回第一次出现的指定子字符串在该字符串中的索引.
substring(int start) 从开始的位置开始截取字符串
capacity() 查看当前字符数组的长度.
- StringBuffer sb1 = new StringBuffer("hcxx");
- System.out.println(sb1.indexOf("x"));//2
- System.out.println(sb1.lastIndexOf("x"));//3
三, 修改方法
replace(int start int endString str) 使用给定 String 中的字符替换此序列的子字符串中的字符. 该子字符串从指定的 start 处开始, 一直到索引 end-1 处的字符
setCharAt(int index char ch) 指定索引位置替换一个字符
substring(int start, int end) 根据指定的索引值截取子串.
ensureCapacity(int minimumCapacity) 指定 StringBuffer 内部的字符数组长度的.
reverse() 把字符串逆序输出.
- StringBuffer sb2 = new StringBuffer("helloworld");
- System.out.println(sb2.replace(2, 6, "java"));// 替换掉 llow 包头不包尾 hejavaorld
- sb2.setCharAt(8, 'A');//l-->A
- System.out.println(sb2);//hejavaorAd
- StringBuffer sb4 = new StringBuffer("helloworld");
- System.out.println(sb4.reverse());//dlrowolleh
四, 删除方法
delete(int start,int end) start<=char<end 根据指定的开始与结束的索引值删除对应的内容. 清空缓冲区: delete(0,sb.length())
deleteCharAt(int index) 根据指定的索引值删除一个字符.
- StringBuffer sb3 = new StringBuffer("helloworld");
- System.out.println(sb3.delete(2, 4));//heoworld
- System.out.println(sb3.deleteCharAt(2));//heworld
五, StringBuffer 和 StringBuilder 的对比
使用 Stringbuffer 无 参的构造函数创建一个对象时, 默认的初始容量是多少? 如果长度不够使用了, 自动增长多少倍?
StringBuffer 底层是依赖了一个字符数组才能存储字符数据的, 该字符串数组默认的初始容量是 16, 如果字符数组的长度不够使用时, 自动增长 1 倍.
StringBuffer 与 StringBuilder 的相同处与不同处:
相同点:
1. 两个类都是字符串缓冲类.
2. 两个类的方法都是一致的.
不同点:
1. StringBuffer 是线程安全的, 操作效率低 ,StringBuilder 是线程非安全的, 操作效率高.
2. StringBuffer 是 jdk1.0 出现 的, StringBuilder 是 jdk1.5 的时候出现的.
推荐使用: StringBuilder, 因为操作效率高.
来源: http://www.jianshu.com/p/66f5adb0d852