我们在上一篇文章Java基础【02】之字符串String中已经说过了String类是不可变的,但是在程序设计中,很多情况下需要字符串不断的变化。此时还继续使用String类,那么就会存在内存消耗大和效率低的问题,这在程序设计中我们应该尽可能的避免。为此Java为我们提供了另一个标准类StringBuffer类,这个对象时可以直接被修改的!
StringBuffer对象的创建没有String类那么复杂,有以下2种:
格式1:
StringBuffer sbf = null;
sbf = new StringBuffer();
格式2:
StringBuffer sbf = new StringBuffer("字符串内容");
以上两种创建方式是等效的,创建StringBuffer对象不能像创建String对象啊那样直接赋值,这两种方式都包含了类名StringBuffer,new关键字以及对象名和字符串的初始值
以下示例创建一个StringBuffer对象:
public calss StringBufferDemo{
public static void main(String[] args){
StringBuffer sbf1 = null; //声明StringBuffer变量sbf1
sbf1 = new StringBuffer("apple"); //实例化StringBuffer变量sbf1
StringBuffer sbf2 = new StringBuffer(); //创建StringBuffer空对象sbf2
StringBuffer sbf3 = new StringBuffer("orange"); //创建StringBuffer对象sbf3
StringBuffer sbf4 = sbf3; //将sbf3赋予sbf4
}
}
StringBuffer的常用方法有很多都是相同或者类似的
StringBuffer append(String str) | 向StringBuffer中追加内容,这个方法可以重载 |
int capacity() | 返回当前容量 |
StringBuffer delete(int start,int end) | 移除指定位置的字符串 |
StringBuffer deleteCharAt(int index) | 移除指定位置的字符 |
StringBuffer insert(int offset,String str) | 将内容插入到字符串的任意位置 |
StringBuffer reverse | 字符串反转 |
void setCharAt(int index,char ch) | 指定位置的字符替换 |
String toString() | 返回此序列中数据的字符串表示形式 |
StringBuffer中的append方法可以追加任意的数据类型,在字符串后面追加
StringBuffer的默认初始容量的字符串缓冲区大小为16个字符,但是不同的StringBuffer对象拥有不同的容量。
比如StringBuffer sbf = new StringBuffer(“apple”);的容量大小为默认容量+字符串的长度
值得我们注意的是StringBuffer类没有重写Object类的equals()方法,所以StringBuffer类是不能使用equals()比较StringBuffer的值,如果需要,我们可以使用toString()方法将StringBuffer的内容转换为String字符串,然后再使用equals()方法比较!