StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer在进行字符串处理时,不生成新的对象,每次修改都会改变对象自身,在内存使用上要优于String类。
/**错误示例:
StringBuffer s = “abc”; // 赋值类型不匹配
StringBuffer s = (StringBuffer)”abc”; // 不存在继承关系,无法进行强转
*/
// StringBuffer对象和String对象之间的互转的代码如下:
String s = “abc”;
StringBuffer sb1 = new StringBuffer(“123”);
StringBuffer sb2 = new StringBuffer(s); //String转换为StringBuffer
String s1 = sb1.toString(); //StringBuffer转换为String
一、构造字符串
StringBuffer( ) // 默认构造函数(无参数)预留了16个字符的空间
StringBuffer(int size) // 设置缓冲区大小
StringBuffer(String str) // 设置StringBuffer对象的初始内容,同时不进行再分配地多预留了16个字符的空间
StringBuffer sb = new StringBuffer("Hello");
System.out.println("length = " + sb.length()); // 输出 5
System.out.println("capacity = " + sb.capacity()); // 输出21 ,因为预留了16个字符的空间
二、方法
1.int length( ) // 得到当前StringBuffer的长度
2.int capacity( ) // 得到总的分配容量
3.void ensureCapacity(int capacity)
4.void setLength(int len) // StringBuffer对象内设置缓冲区的大小
5.char charAt(int where) // 在构造StringBuffer之后为某些字符预分配空间
6.void setCharAt(int where, char ch) // 将下标为where 的字符修改为 ch
7.void getChars(int sourceStart, int sourceEnd, char target[ ],int targetStart)
8.StringBuffer append(String str) // 在末尾增加字符串
9.StringBuffer append(int num)
10.StringBuffer append(Object obj)
11.StringBuffer insert(int index, String str) // 在 字符串下标index 处插入字符串str
12.StringBuffer insert(int index, char ch)
13.StringBuffer insert(int index, Object obj)
14.StringBuffer reverse( ) // 返回被调用对象的翻转对象
15.StringBuffer delete(int startIndex, int endIndex) // 删除从 startIndex 到 endIndex-1 的字符串
16.StringBuffer deleteCharAt(int loc) // 删除指定位置 loc 的字符
17.StringBuffer replace(int startIndex, int endIndex, String str) // 替换
18.String substring(int startIndex) // 同String 返回从startindex 至末尾的字符串
19.String substring(int startIndex, int endIndex)
// 返回从 startIndex 到 endIndex-1 的字符串
范例:
public static void main(String[] args) {
StringBuffer sb =new StringBuffer("Hello");
System.out.println("length = " + sb.length()); // 输出 5
System.out.println("capacity = " + sb.capacity()); // 输出21 ,因为预留了16个字符的空间
StringBuffer sb1 =new StringBuffer(); // 初始容量为16
sb1.append("Good morning, World!"); // 20个字符,超出范围,追加16个字符的容量
System.out.println("capacity = " + sb1.capacity()); // 输出36
sb1.insert(13, "Big"); // 在字符下标13处插入 Big
System.out.println(sb1); // 输出Good morning,Big World!
sb1.substring(17);
System.out.println(sb1); //仍输出Good morning,Big World! substring()方法返回 string类的对象,不是StringBuffer
String s=sb1.substring(17);
System.out.println(s); // 输出World!
sb1.delete(0, 22);
System.out.println(sb1); // 输出!
sb1.append("abcd").reverse();
System.out.println(sb1); // 输出 dcba!
}