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倍不止啊。線程

相關文章
相關標籤/搜索