一、引言
String类虽然很强大,但是因为String类不可变,所以会造成内存的过于浪费。为了解决字符串的内存问题,诞生了StringBuffer类,也就是字符串缓冲区。它的出现极大提高了字符串的操作效率。
StringBuffer内部定义了一个没有final的数组(实质上是StringBuffer继承的父类AbstractStringBuilder中定义的:char[] value)。该数组的默认容量是16个字符。当数组扩容时,将原数组复制,再添加,形成新的数组,将旧数组抛弃。
二、StringBuffer的方法
》StringBuffer append(String str)
将形参引用的字符串追加到字符串后面,可以接受任何数据类型但是最后输出的都是字符串类型。谁调用返回谁,可以无限制在后面调用(方法调用链,即如果方法的返回值类型还是个对象,那么还可以接着点出方法)
结果:
》StringBuffer delete(int start, int end) 移除此序列的子字符串中的字符
java中,索引有开始结束的,都是含头不含尾
如果想清空缓冲区,可以通过如下代码做到:
结果:
》StringBufferinsert(int offset, ***) 将字符串插入此字符串任意位置(offset指定的下标位置),***可以为任何类型
》StringBufferreplace(int start, int end, String str) 使用给定字符串替换
》StringBufferreverse() 将此字符序列反转
》StringtoString() 以字符串形式返回序列
三、StringBuilder类
与StringBuffer兼容(两个类的方法相同),该类被设计用作StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候。如果没有多线程需求,建议使用StringBuilder,因为StringBuilder较快。
四、StringBuilder 与 StringBuffer 的区别
StringBuilder线程不安全,执行效率高,StringBuffer相反。其他都一样,方法完全相同。