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对象,提高程序
的运行效率
                    
                
                
            
        
浙公网安备 33010602011771号