StringBuilder和StringBuffer

StringBuilder 和 StringBuffer

java.lang.StringBuilderjava.lang.StringBuffer因为String拼接的时候, 每拼接一次都会创建一个新的字符串, 特别再处理很多字符串拼接的时候, 效率非常慢, StringBuilder一般就是常用来更加快速的拼接字符串, StringBuilder和StringBuffer本质上一样, 都是更为高效的拼接字符串, 但是由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。

常用方法

返回值 方法 作用
StringBuilder append(重载参数) 更加快速的拼接字符串, 一般重载参数最常用的是String类型
String toString() 把StringBuilder转为String字符串

性能测试

StringStringBuilder的测试

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)
posted @ 2020-05-16 09:41  zpk-aaron  阅读(128)  评论(0编辑  收藏  举报