可变的String类之StringBuffer

我们在上一篇文章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()方法比较!



猜你喜欢

转载自blog.csdn.net/poison6/article/details/80356414