由于String是不可变对象,在对一个字符串进行增删改插的时候,总是会在内存中开辟新的空间。如果程序需要对字符串进行频繁的修改会造成非常昂贵的开销,为了解决这个问题,我们可以使用System.Text.stringBuilder这个类,可以大大提升性能。
StringBuilder对象的初始化
对于StringBuilder对象,初始化时不可将null
直接赋予。
StringBuilder sb = new StringBuilder(); //无参构造方法,默认容量是16
StringBuilder sb = new StringBuilder(int capacity); //指定容量的字符串缓冲区对象
StringBuilder sb = new StringBuilder(String string); //指定字符串内容的字符串缓冲区对象
当我们将任意类型的数据添加到StringBuilder类对象中时候,StringBuilderr容量不够的情况下,会自动进行扩充容量,它的扩容公式为:原容量<<1 + 2
方法 | 描述 |
---|---|
public int capacity() | 返回当前容量 |
public int length() | 返回长度(字符数)实际值 |
public StringBuilder append(String s) | 将指定的字符串追加到此字符序列 |
public StringBuilder insert(int offset, int i) | 将 int 参数的字符串表示形式插入此序列中 |
public StringBuilder insert(int offset, String string) | 将String参数的字符串表示形式插入到此序列中 |
public StringBuilder deleteCharAt(int index) | 删除指定位置的字符,并返回本身 |
public StringBuilder delete(int start, int end) | 删除从指定位置开始指定位置结束的内容,并返回本身 |
public StringBuilder reverse() | 将此字符序列用其反转形式取代 |
public StringBuilder replace(int start, int end, String str) | 使用给定String中的字符替换此序列的子字符串中的字符 |
public String substring(int start) | 从指定位置截取到末尾 |
public String substring(int start, int end) | 截取从指定位置开始到结束位置,包括开始位置,不包括结束位置(注意:返回值不再是StringBuffer本身,而是String) |
StringBuilder和String的相互替换
- String------->StringBuilder
(1)通过构造方法
(2)通过StringBuilder的append或者insert方法 - StringBuilder------->String
(1)通过toString()方法
(2)通过substring(0,length)方法
网友评论