java入门(二十九) | API(三)之StringBuilder/StringBuffer
StringBuilder/StringBuffer
1.1 特点
1、 封装了char[]数组
2、 是可变的字符序列
3、 提供了一组可以对字符内容修改的方法
4、 常用append()来代替字符串做字符串连接
5、 内部字符数组默认初始容量是16:super(str.length() + 16);
6、 如果大于16会尝试将扩容,新数组大小原来的变成2倍+2,容量如果还不够,直接扩充到需要的容量大小。
int newCapacity = value.length * 2 + 2;
1.2 常见方法
append()
1.3 练习:测试字符串连接效率
package cn.qile.stringdemo;
//测试字符串拼接效率
public class Test2_String {
public static void main(String[] args) {
// method();// 用+拼接字符串
method2();// 用工具类优化拼接效率
}
// 用工具类优化拼接效率
private static void method2() {
String str = "abcdefghijklmnopqrstuvwxyz";
// 拼接指定字符串10000次
// String result = "";// 记录拼接结果
StringBuffer sb = new StringBuffer();
long start = System.currentTimeMillis();// 获取当前的毫秒值
for (int i = 0; i < 10000; i++) {
// result = result + str;// +拼接
sb.append(str);
}
long end = System.currentTimeMillis();// 获取当前的毫秒值
System.out.println(end - start);// 给程序计时,3ms
}
// 用+拼接字符串
private static void method() {
String str = "abcdefghijklmnopqrstuvwxyz";
// 拼接指定字符串10000次
String result = "";// 记录拼接结果
long start = System.currentTimeMillis();// 获取当前的毫秒值
for (int i = 0; i < 10000; i++) {
result = result + str;// +拼接
}
long end = System.currentTimeMillis();// 获取当前的毫秒值
System.out.println(end - start);// 给程序计时,2428ms
}
}