千万级测试String、StringBuffer和StringBuilder的速度

面试是经常被问到StringStringBuilderStringBuffer三者的速度有什么区别,经过测试后,这三者的执行速度关系是:StringBuilder > StringBuffer > String,测试过程如下:

public class TestStringTools {

	public static void main(String[] args) {
		
		// 测试String速度
		System.out.println("String 开始时间"+System.currentTimeMillis());
		String testString = "test";
		for(int i=0; i<=100000; i++) {
			testString = testString + "第" + i + "个";
		}
		System.out.println("String 结束时间"+System.currentTimeMillis());
		
		// 测试StringBuilder速度
		System.out.println("StringBuilder 开始时间"+System.currentTimeMillis());
		StringBuilder testBuilder = new StringBuilder("test");
		for(int i=0; i<=10000000; i++) {
			testBuilder.append("第" + i + "个");
		}
		System.out.println("StringBuilder 结束时间"+System.currentTimeMillis());
		
		// 测试StringBuffer速度
		System.out.println("StringBuffer 开始时间"+System.currentTimeMillis());
		StringBuffer testBuffer = new StringBuffer("test");
		for(int i=0; i<=10000000; i++) {
			testBuffer.append("第" + i + "个");
		}
		System.out.println("StringBuffer 结束时间"+System.currentTimeMillis());
		
	}

}

由于用 String 做字符串拼接实在太慢了,因此我们这里只进行10万次循环,而StringBuilderStringBuffer进行1千万次循环,然后对结果进行比较:
千万级测试String、StringBuffer和StringBuilder的速度_第1张图片
String 进行10万次字符串拼接,时间是:42354毫秒
StringBuilder 进行1千万次字符串拼接,时间是:445毫秒
StringBuffer 进行1千万次字符串拼接,时间是:755毫秒

你可能感兴趣的:(Java,校招面试)