java中除了String类可以对字符串进行处理外,还提供了StringBuilde和StringBuffer类的字符串解决方案。一般来说,只要使用字符串的地方,都可以使用StringBuilder或StringBuffer类。
String类对象一旦创建,值就不能改变。StringBuffer或StringBuilder类比String类更加灵活,支持添加、插入和追加新的内容。如果不更改字符串内容则使用String类而不是StringBuffer或StringBuilder类。
StringBuffer和eStringBuilder的主要区别在于StringBuffer中修改缓冲区的方法是同步的。所以,如果是多任务并发访问,使用StringBuffer类,如果是单任务访问,使用StringBuilder更有效。其余方面,两个差别小,使用类似。
StringBuilder类提供了3个构造方法用于创建一个空的字符串生成器或从一个字符串创建一个字符串生成器。该类同时提供了多个用于管理或修改生成器内字符串的方法。
StringBuilder();//构建一个容量为16的字符串生成器
StringBuilder(int capacity);//构建一个指定容量的的字符串生成器
String Builder(String s);//构建一个指定字符串的字符串生成器
StringBuilder提供的几个主要方法:
序号 | 方法 | 方法描述 |
1 | public StringBuffer append(String s) | v将指定的字符串追加到此字符序列(有其他重载方法) |
2 | public StringBuffer reverse() | 将此字符序列用其反转形式取代。 |
3 | public delete(int start, int end) | 移除此序列的子字符串中的字符(有其他重载方法) |
4 | public insert(int offset, int i) | 将 int 参数的字符串表示形式插入此序列中(有其他重载方法) |
5 | replace(int start, int end, String str) | 使用给定 String 中的字符替换此序列的子字符串中的字符。 |
6 | toString() | 从字符串生成器返回一个字符串对象 |
7 | trimToSize() | 减少字符串生成器所使用的存储大小 |
8 | capacity() | 返回字符串生成器容量 |
9 | length() | 返回生成器中字符个数 |
以上1~5方法,主要做两件事:改变字符串生成器内容+返回字符串生成器的引用。这样,改变了字符串的值而且未产生新的对象。
- 计算机内部,字符串生成器是一个字符数组,生成器的大小就是数组的大小。
- 字符串的长度总是小于等于生成器的容量。长度是存储在生成器中的字符串的实际大小,容量是生成器的当前大小。如果向生成器增加字符超过生成器容量,则容量自动增加。新数组的大小=2*(前一个数组长度+1)。
- 可以使用trimToSize()方法将容量降到字符串实际大小