Java StringBuilder
Java StringBuilder类是可变的字符序列。
StringBuilder类可以与String相提并论,但是StringBuilder类由于其修改功能而提供了更多的通用性。
Java StringBuilder
StringBuilder类提供类似于StringBuffer的API,但与StringBuffer不同,它不能保证线程安全。
Java StringBuilder类设计用于在单个线程正在使用字符串缓冲区的地方(通常是这种情况)代替StringBuffer。
如果执行速度和性能是一个因素,则可以使用StringBuilder类代替StringBuffer。
StringBuilder类提供的基本操作是append()和insert()方法。
为了容纳不同的数据类型,这些方法在StringBuilder中被重载。StringBuilder附加和插入方法的一般流程是:(1)将给定的数据转换为字符串,然后(2)将该字符串的字符附加或者插入到字符串生成器。
Java StringBuilder append()方法始终将这些字符添加到生成器的末尾。
insert()方法在指定点插入字符。
StringBuilder类图
StringBuffer和StringBuilder
StringBuffer | StringBuilder |
---|---|
Synchronized, hence thread safe. | Not synchronized, not thread safe. |
Operates slower due to thread safety feature | Better performance compared to StringBuffer |
Has some extra methods – substring, length, capacity etc. | Not needed because these methods are present in String too. |
Introduced in Java 1.2 | Introduced in Java 1.5 for better performance. |
Java StringBuilder构造函数
Constructor | Description |
---|---|
StringBuilder() | Creates an empty string builder with a default capacity of 16 (16 empty elements). |
StringBuilder(CharSequence cs) | Constructs a string builder containing the same characters as the specified CharSequence, plus an extra 16 empty elements trailing the CharSequence. |
StringBuilder(int initCapacity) | Creates an empty string builder with the specified initial capacity. |
StringBuilder(String s) | Creates a string builder whose value is initialized by the specified string, plus an extra 16 empty elements trailing the string. |
StringBuilder的长度和容量
Java StringBuilder类与String类非常相似,具有" length()"方法,该方法返回构建器中字符序列的长度。
但是,StringBuilder从其超类AbstractStringBuilder继承了Capacity()方法,该方法返回已分配的字符空间数。
返回的值始终大于或者等于长度(通常大于),并在需要时自动扩展以适应向字符串生成器添加的字符。
//creates empty builder, capacity 16 StringBuilder sb = new StringBuilder(); //adds 5 character string at beginning sb.append("Hello"); System.out.println("StringBuilder length = "+sb.length()); //prints 5 System.out.println("StringBuilder capacity = "+sb.capacity()); //prints 16
还有其他一些与StringBuilder的长度和容量有关的方法。
void setLength(int newLength):设置字符序列的长度。
如果newLength小于length(),则字符序列中的最后一个字符将被截断。
如果newLength大于length(),则在字符序列的末尾添加空字符。void sureCapacity(int minCapacity)
:确保容量至少等于指定的最小值。
诸如append(),insert()或者setLength()之类的StringBuilder方法可以增加字符串生成器中字符序列的长度,以便返回的length()值大于当前的Capacity()。
。
在这种情况下,容量会自动增加。
Java StringBuilder示例
让我们看一下StringBuilder类的不同方法的示例。
append()
:StringBuilder append()方法将传递的String参数与现有声明的字符串连接或者附加。
它将其附加在声明的字符串之后。
输出:Hello World
insert()
:StringBuilder insert()方法将传递的String参数插入传递的String索引处。replace(int startIndex,int endIndex,String str):StringBuilder replace()方法替换现有的声明字符串。
字符串替换从传递的startingIndex到EndingIndex发生。delete(int startIndex,int endIndex)
:StringBuilder delete()方法删除一个字符或者一组字符。
删除发生在传递的startingIndex到endingIndex之间。reverse()
:StringBuilder类的reverse()方法反转现有的已声明字符串。
在没有现有声明值的StringBuilder对象上调用reverse()方法将引发NullPointerException。capacity()
:StringBuilder类的Capacity()方法返回StringBuilder对象的当前容量。
构建器的默认容量为16。
如果字符数从其当前容量增加,它将增加(old_capacity * 2)+2,例如。
在当前容量16下,它变为(16 * 2)+ 2 = 34。" ensureCapacity()":StringBuilder类的ensureCapacity()方法可确保给定容量为当前容量的最小值。
如果大于当前容量,则将容量增加(old_capacity * 2)+2,例如在当前容量16下,它变为(16 * 2)+2,即34。