StringBuilder和StringBuffer
StringBuilder 和 StringBuffer
java.lang.StringBuilder
和java.lang.StringBuffer
因为String拼接的时候, 每拼接一次都会创建一个新的字符串, 特别再处理很多字符串拼接的时候, 效率非常慢, StringBuilder一般就是常用来更加快速的拼接字符串, StringBuilder和StringBuffer本质上一样, 都是更为高效的拼接字符串, 但是由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。
常用方法
返回值 | 方法 | 作用 |
---|---|---|
StringBuilder | append(重载参数) | 更加快速的拼接字符串, 一般重载参数最常用的是String类型 |
String | toString() | 把StringBuilder转为String字符串 |
性能测试
String
和StringBuilder
的测试
public class Test3_StringBuilder {
public static void main(String[] args) {
method();
method2();
}
// 使用+拼接字符串
public static void method() {
// 创建字符串
String str = "abcdefghijklmn";
String res = "";// 定义变量, 记录拼接结果
// 把指定的字符串拼接100次并且打印 拼接结果
long start = System.currentTimeMillis(); // 计时开始
for (int i = 0; i < 10000; i++) {
res = res + str; // 通过+拼接字符串
}
long end = System.currentTimeMillis(); // 计时结束
System.out.println((end-start)/1000.0);
}
// 使用StringBuilder拼接字符串
private static void method2() {
String str = "abcdefghijklmn";
StringBuilder sb = new StringBuilder();
long start = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {
sb.append(str);
}
long end = System.currentTimeMillis();
System.out.println((end - start) / 1000.0);
}
}
测试结果
0.582 // String 的 + 号拼接字符串(单位: s)
0.001 // StringBuilder拼接字符串(单位: s)