JAVA中StringBuffer类

    关于StringBuffer类和String类,估计很多人都没去细索两者之前的区别以及何时用此何时用彼。确实,StringBuffer能实现的,String基本都能实现,对于不追求品质,不关注性能安全的即兴发挥家们来说,都是一样用。

    首先StringBuffer类和String一样,都是用来代表字符串的,但是StringBuffer的内部实现方式是不一样的,StringBuffer在处理字符串时不用生成新的对象,在内存占用上要比String类更优。所以,如果需要对一个字符串,经常性的修改,如加长,缩短,插入等,最好还是使用StringBuffer类,其实这也是StringBuffer被赋予的主要使命。

    在StringBuffer类中存在很多和String类一样的方法,这些方法功能上和String类是一样的,但是有一点,StringBuffer对象每次进行修改,都是修改的对象本身,这点和String类是有区别的;还有,StringBuffer类和String类之前不存在继承关系,所以两者之间也不能进行强制转换;另外,StringBuffer是线程安全的,即多线程操作时不会影响其值,当然,安全是需要牺牲效率的。

    StringBuffer类的初始化

    StringBuffer类初始化不像String,StringBuffer是需要使用其构造方法来生成一个对象才能使用的,如下:

                          StringBuffer  sb  =  new StringBuffer();       //初始化一个空的对象

                          StringBuffer  sb  =  new StringBuffer("vip");            //初始化一个对象,该对象包含字串"vip"

像如下初始化是错误的:

                          StringBuffer  sb  =  "vip";              //错误!!!

    StringBuffer类与String类之间的相互转换

    上面说了,StringBuffer与String类直接是不能强制转换的,即如下代码非法:

                          StringBuffer  sb  =  (StringBuffer)"vip";      //错误,不存在继承关系

如下转换才是正确的:

                          String  str  =  "vip";

                          StringBuffer  sb  =  new StringBuffer(str);      //String转换为StringBuffer

                          String str1  =  sb.toString();                 //StringBuffer转换为String

    StringBuffer的常用方法

    1) append方法

    public  StringBuffer  append(boolean  b);

    public  StringBuffer  append(int  i);

    public  StringBuffer  append(char  c);

    public  StringBuffer  append(char[]  str);

    public  StringBuffer  append(char[]  str, int offset, int len);

    public  StringBuffer  append(float  f);

    public  StringBuffer  append(double d);

    public  StringBuffer  append(long  l);

    public  StringBuffer  append(Object  obj);

    public  StringBuffer  append(String str);

    public  StringBuffer  append(StringBuffer  sb);

    这些方法都是向字符串缓冲区追加元素,但是这个元素可以是如上任意一种类型,如

                      StringBuffer  sb  =  new StringBuffer("vip");

                      sb.append(true);         //sb内容变成"viptrue"

    2) capacity方法

    int  capacity();

    返回当前StringBuffer对象(字符串缓冲区)的总空间,并不是字符串的长度。

    3) length方法

    int  length();

    这个才是返回当前字符串的长度。

    4) charAt方法

    char  charAt(int  index);

    不用多说,String类中也有该方法,返回索引号为index处的字符,index从0开始。

    5) setCharAt方法

    void setCharAt(int index, char ch);

    设置索引号index的字符为ch。

    6) deleteCharAt方法

    StringBuffer  deleteCharAt(int  index);    //不用多说

    7) delete方法

    StringBuffer  delete(int  start,  int  end);

    不用多说,看名字也知道,删除索引号start到end之间的字串,另外特别注意,这是个左闭右开区间,即“start  <=  删除字符的索引号  <  end”。

    8) ensureCapacity方法

    void  ensureCapacity(int  minimumCapacity);

    重置字串缓冲区总空间,如果minimumCapacity小于当前总空间,则新的总空间不变;如果minimumCapacity大于当前空间但是小于“(当前空间 + 1)* 2”,则新的空间被设置为“(老空间 + 1) * 2”;如果minimumCapacity比前面情况更大,则新空间变为minimumCapacity。即ensureCapacity只允许增大空间,不允许缩小。

    9) setLength方法

    void setLength(int newLength);

    重新设置字符串缓冲区中字符串的长度,如果newLength小于当前的字符串长度,将截去多余的字符。

    10) getChars方法

    void  getChars(int  srcBegin, int srcEnd,  char[]  dst,  int  dstBegin);

    从当前StringBuffer对象的索引号srcBegin开始到srcEnd结束的字串,拷贝到字符数组dst中,并且从字符数组的dstBegin处开始拷贝。

    11) indexOf方法

    int  indexOf(String  str);    //返回当前StringBuffer中第一个满足str字串的位置

    int  indexOf(String  str, int  fromIndex);  //功能同上,只是从fromIndex处开始找

    12) lastIndexOf方法

    int  lastIndexOf(String  str);   //返回当前StringBuffer中最后一个满足str字串的位置

    int  lastIndexOf(String  str, int fromIndex);     //功能同上,只是从fromIndex处开始找

    13) insert方法

    StringBuffer  insert(int  offset, boolean  b);

    StringBuffer  insert(int  offset, char  c);

    StringBuffer  insert(int  offset, char[]  str);

    StringBuffer  insert(int  index, char[]  str, int  offset, int  len);

    StringBuffer  insert(int  offset, double  d);

    StringBuffer  insert(int  offset, float  f);

    StringBuffer  insert(int  offset, int  i);

    StringBuffer  insert(int  offset, long  l);

    StringBuffer  insert(int  offset, Object  obj);

    StringBuffer  insert(int  offset, String str);

    这些方法都是在当前StringBuffer对象中插入一个元素,在索引号为offset处插入。

    14) replace方法

    StringBuffer replace(int start, int end, String str);

    替换当前StringBuffer对象的字符串。从start开始,到end结束的位置替换成str。

    15) reverse方法

    StringBuffer reverse();

    将字符串翻转。

    16) substring方法

    String substring(int start);           //取当前StringBuffer对象中,从start开始到结尾的子串。

    String substring(int start, int end);         //取当前StringBuffer对象中,从start开始到end的子串。

    17) toString方法

    String toString();

    将当前StringBuffer对象转换成String对象。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值