Java中的StringBuffer
Java中的StringBuffer用于创建可修改的String对象。
这意味着我们可以使用StringBuffer追加,反转,替换,连接和操作字符串或者字符序列。
分别创建StringBuffer类下的相应方法以遵守这些功能。
在Java中,字符串被认为是不可变的或者不可编辑的,除非被覆盖。
这是StringBuffer类出现的地方,它可以容纳字符序列并仍启用可变功能。
Java中的StringBuffer
Java中有关StringBuffer的一些重要点是:
StringBuffer与String类非常相似,但具有可变性功能。
与Strings的长度和内存分配是最终的不一样,StringBuffer具有修改这些属性的现有方法。
StringBuffer是线程安全的,大多数方法都是同步的。
因此,多个线程不能同时访问或者使用StringBuffer对象。java.lang.StringBuffer扩展了AbstractStringBuilder抽象类。
StringBuffer从java.lang继承了clone(),equals(),finalize(),getClass(),hashCode(),notify()和notifyAll()方法。
对象的超类。StringBuffer实现了CharSequence,Appendable和Serializable接口。
StringBuffer的" capacity()"方法可用于检索可用于添加新字符序列的内存,超过此数量将进行分配。
与StringBuilder类相比,StringBuffer由于同步而运行较慢。
Java StringBuffer类具有字符序列内存分配的灵活性。
这意味着我们可以使用StringBuffer类修改给定的String。
使之成为可能的原因是StringBuffer类保留了临时内存以供将来修改。
StringBuffer类图
下图说明了StringBuffer类实现的接口。
注意,StringBuffer扩展了Java 1.5引入的AbstractStringBuilder类。
StringBuffer构造函数
StringBuffer()
:创建一个带有空内容和默认16个保留字符的StringBuffer。StringBuffer(int sizeOfBuffer)
:创建一个StringBuffer,其中传递的参数为空缓冲区的大小。StringBuffer(String string)
:创建一个StringBuffer,将传递的String作为缓冲区的初始内容。
为了修改目的,预先分配了16个或者有内存字符,不包括缓冲区。
StringBuffer方法
length():返回StringBuffer对象的长度。
capacity()
:返回StringBuffer对象的容量。
StringBuffer sb = new StringBuffer();
上面的StringBuffer示例程序产生的输出:
StringBuffer sb = new StringBuffer(20);
- append():将指定的参数字符串表示形式附加在现有字符串缓冲区的末尾。
所有原始数据类型和Object都重载了此方法。
StringBuffer sb = new StringBuffer("Hello World!");
insert()
:insert()方法有两个参数-用于插入值的索引整数值和要插入的值。
索引告诉StringBuffer其中插入传递的字符序列。
同样,此方法已重载以使用原始数据类型和对象。
package com.theitroad.java; public class StringBufferExample { public static void main(String[] args) { StringBuffer sb = new StringBuffer("Hello"); int sbLength = sb.length(); int sbCapacity = sb.capacity(); System.out.println("String Length of " + sb + " is " + sbLength); System.out.println("Capacity of " + sb + " is " + sbCapacity); } }
- reverse():反转缓冲区中现有的String或者字符序列的内容并返回它。
该对象必须具有现有内容,否则将引发NullPointerException。
String Length of Hello is 5 Capacity of Hello is 21
delete(int startIndex,int endIndex)
:接受两个整数参数。
前者用作开始删除索引,而后者用作结束删除索引。
因此,startIndex和endIndex-1之间的字符序列将被删除。
返回缓冲区中剩余的String内容。
StringBuffer sb = new StringBuffer("Hello "); sb.append("World "); sb.append(2016); System.out.println(sb);
deleteCharAt(int index)
:删除缓冲区内String中的单个字符。
删除字符的位置由传递的整数索引确定。
返回缓冲区中剩余的String内容。
StringBuffer sb = new StringBuffer("HelloWorld "); sb.insert(5, " "); sb.insert(sb.length(), 2016); System.out.println(sb);
- replace(int startIndex,int endIndex,String str):接受三个参数:前两个参数是现有字符串缓冲区的开始和结束索引。
因此,删除了startIndex和endIndex-1之间的字符序列。
然后,将作为第三个参数传递的String插入到startIndex处。
StringBuffer sb = new StringBuffer("Hello World"); System.out.println(sb.reverse());