与String类不同,StringBuffer类表示长度和内容动态可变的字符串缓存。它有两个基本参数:长度和容量,长度即StringBuffer对象所表示的字符串长度;容量是StringBuffer对象所拥有的内存空间大小。比如,某个StringBuffer对象容量是100,但它存放的字符串长度可能仅为10,程序员可直接对缓存进行插入、修改、删除、替换等操作,操作结果会影响串对象。比之传统的字符,StringBuffer能自动管理字符串占用的内存空间,减轻程序员的负担。
StringBuffer的构造方法如下:
- public StringBuffer():构造一个不带字符的字符串缓存,初始容量为16字符。
- public StringBuffer(int capacity):构造一个不带字符,但指定初始容量的字符串缓存。
- public StringBuffer(String str):构造一个字符串缓存,并将其内容初始化为指定的字符串内容。该字符串的初始容量为16加上字符串参数长度。
StringBuffer的常用方法如下: - StringBuffer append():向缓存内添加新的字符串。
- StringBuffer insert(int offset,String str):在字符串的offset位置插入字符串str。
- StringBuffer delete(int start,int end):删除字符串中从start开始一直到索引end-1处结束的子字符串。
- StringBuffer reverse():将字符序列逆序。
String与StringBuffer的区别:
(1)String代表字符串常量,Java程序中的所有字符串字面值(如"abc")都作为此类的实例实现,它们的值在创建之后不能更改;StringBuffer代表可变字符序列,即一个字符串缓存,通过方法(如append()/insert()/delete/replace等)调用可改变字符串序列的长度和内容。
(2)String重写了从Object继承的equals()方法,而StringBuffer没有重写,例如:
`String s1=new String("hello");
String s2=new String("hello");
System.out.println(s1.equals(s2));//true
StringBuffer sb1