Java中StringBuffer类的用法

Java当中的类 java.lang.StringBuffer 称为字符串缓存区类

1、StringBuffer的对象和String对象是一样的,都是用来保存和维护一个字符串序列的

   只不过字符串缓存区实例对象中的字符串序列是可以进行修改的

2、字符串缓存区的机制是:当实例化一个字符串缓存区实例对象时,就在内存当中开辟出

   一段有限的空间,作为一个存储字符串序列的区域,如果在对字符串序列进行修改后

   字符串序列的长度超过了缓存区的容量的话,那么程序就会自动的按照一定的规则进行

   扩容

3、字符串缓存区的容量:即该缓存区可以容纳的总的字符的个数

   字符串缓存区的长度:即该缓存区中当前存储的字符序列的长度

4、如何创建字符串缓存区的实例对象——构造方法

   ① public StringBuffer()  创建一个默认容量为 16 ,长度为 0 的实例对象

   ② public StringBuffer(int capacity)

       创建一个容量为 capacity ,长度为 0 的实例对象

   ③ public StringBuffer(String str)

       创建一个容量为str.length()+ 16 的, 长度为str.length() 的含有与str相同

       字符序列的实例对象

5、获取和设置字符串缓存区的属性

   <1> public int length()

   <2> public int capacity()  获取容量

   <3> public void ensureCapacity(int minimum)

       设置当前的缓存区的容量,新的缓存区的容量为下面的两个数中的较大者

        ① minimum

        ② (原来字符串缓存区的容量) * 2 + 2

       重新分配内存空间的缓存区中的字符序列是不改变的

   <4> public void trimToSize()

       减小缓存区的容量,使得容量正好等于长度

   <5> public void setLength(int newLength)

       设置缓存区的长度,如果 newLength 小于 原有的长度的话,则只保留前newLength个

       字符,如果 newLength 大于原有的长度的话,则在原有字符串序列的末尾填补'\0'

       如果newLength大于当前的容量,那么遵循 <3>

   <6> public char charAt( int index)

   <7> public void setCharAt( int index , char ch )

       更改指定位置处的字符

   <8> public int indexOf(String str)

       返回字符串str在当前缓存区中第一次出现的位置,如果没有,返回 -1

      public int lastIndexOf(String str)

       返回字符串str在当前缓存区中最后一次出现的位置,否则返回 -1

6、对字符串缓存区的字符进行 增、删、改 、等操作

   <1> public StringBuffer append(参数)

       功能:在当前缓存区的字符序列的末尾追加字符串

       参数:参数类型可以是基本的数据类型,也可以是引用数据类型

         即:Object obj / boolean b  / char ch /byte bt/short s /

             long l / float f / double d / String  str / StringBuffer buf/

             char[] c               注意:在调用该方法时,会根据参数的不同,首先调用toString() 和 valueOf();

             此外该方法首先会将当前的字符缓存区的内容更改后,同时将该缓存区的引用

             返回,下面的方法都是如此           <2> public StringBuffer insert(int offset,参数)

        功能:在指定的offset位置,将指定的参数字符串插入到当前的字符序列中

        参数:同上

    <3> 删除操作:

        public StringBuffer delete(int start , int end)

        public StringBuffer deleteCharAt( int index )

    <4> 替换操作:

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

        将指定位置处的子字符序列,用str 进行替换

    <5> public StringBuffer reverse() 将原字符序列变为逆序

  以上各方法,如果需要进行扩容,那么扩容的规则和 5、<3> 一致

7、通过java.lang.StringBuffer 的成员方法 ,可以根据缓存区字符序列创建String对象

   ① public String toString()

   ② public String substring(int start)

      public String substring(int start , int end )

8、最后我们总结一下String和StringBuffer的区别

   ①String 类重写了继承的equals()方法,但是StringBuffer类却没有重写该方法

   ②String对象之间可以用“+”运算来进行连接,但是StringBuffer对象之间却不能

     只能通过append方法进行连接

   ③StringBuffer对象之间是不能比较大小的,但是String对象却可以,所以解决      StringBuffer对象之间比较大小的方法也非常容易,就是通过上面的toString()

     方法,将StringBuffer对象首先转换成String对象再进行比较即可,这一方法是非常

     常见的       ④如果在程序当中需要频繁的修改字符串的话,那么最好使用StringBuffer对象,同时在

     String对象之间进行合理的相互转换,那么就会节省大量的临时String对象,提高程序

     的运行效率

 

posted @ 2014-08-10 10:34  RoperLee  阅读(673)  评论(0)    收藏  举报