Java 中的String、StringBuffer、StringBuilder

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

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

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));
	}

}

输出如下

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

从这个实验可以看出,StringBuilder 的时间效率比String高1000倍不止啊。

猜你喜欢

转载自my.oschina.net/u/2606060/blog/1555622