Java 中的String、StringBuffer、StringBuilder

1.String的值是不变的,String变量每修改一次都会生成一个新的对象,效率比较低。
2.StringBuffer的变量只会生成一个新对象,每次修改变量的值,不会再生成新对象,效率比较高,是线程安全的。
3.StringBuilder,和StringBuffer基本同样,区别是StringBuilder不是线程安全的,效率稍微高一点。安全

下面咱们来作一个实验,分别对String、StringBuffer、StringBuilder 的一个变量,作50000次改变,记录改变的时间。app

public  class Test {
	
	public static void main(String[] args) {
		testString();
		testStringBuffer();
		testStringBuilder();
	}
	
	public static void testString(){
		long start=System.currentTimeMillis();
		String str="s";
		for(int i=0;i<50000;i++){
			str+=i;
		}
		System.out.println("testString=============="+(System.currentTimeMillis()-start));
	}
	public static void testStringBuffer(){
		long start=System.currentTimeMillis();
		StringBuffer str=new StringBuffer("s");
		for(int i=0;i<50000;i++){
			str.append(i);
		}
		System.out.println("testStringBuffer=============="+(System.currentTimeMillis()-start));
	}
	public static void testStringBuilder(){
		long start=System.currentTimeMillis();
		StringBuilder str=new StringBuilder("s");
		for(int i=0;i<50000;i++){
			str.append(i);
		}
		System.out.println("testStringBuilder=============="+(System.currentTimeMillis()-start));
	}

}

输出以下ui

testString==============3658
testStringBuffer==============4
testStringBuilder==============2

从这个实验能够看出,StringBuilder 的时间效率比String高1000倍不止啊。线程

相关文章
相关标签/搜索