JAVA写一个简单的泛型方法比较Stirng、StringBuffer、StringBuilder处理字符串效率

public class Test {
	public static void main(String[] args) {
		System.out.println("String处理需要的时间 :" + testTime("abc"));
		System.out.println("StringBuffer处理需要的时间:" + testTime(new StringBuffer("abc")));
		System.out.println("StringBuilder处理需要的时间" + testTime(new StringBuilder("abc")));
		
	}
	
	static <E> long testTime(E e) {
		long startTime = System.currentTimeMillis();
		int n = 100000;
		for (int i = 0; i < n; i++) {
			if (e instanceof String) {
				String s = (String)e;
				s += "abc";
			} else if (e instanceof StringBuilder) {
				StringBuilder s = (StringBuilder)e;
				s.append("abc");
			} else if (e instanceof StringBuffer) {
				StringBuffer s  = (StringBuffer)e;
				s.append("abc");
			}
		}
		return System.currentTimeMillis() - startTime;
		
	}

}

运行结果如下图

可见对字符串处理的效率,StringBuilder最高,StringBuffer其次,String最慢

以下总结转自其他博主的内容:

由上边的图可以清楚的看出,为什么大家都鼓励用StringBuffer连接字符串了。在连接次数少 
的情况下,String的低效率表现并不是很突出,但是一旦连接次数多的时候,性能影响是很大的,String进 
行20万次字符串的连接,大约需要45s时间,而StringBuffer只需要10毫秒,相差接近5000倍以上。而 
StringBuffer和StringBuilder差别并不大,StringBuilder比StringBuffer稍微快点,我想是因为StringBuffer 
是线程序安全的,StringBuilder不是线程序安全的,所以StringBuffer稍微慢点。

猜你喜欢

转载自blog.csdn.net/qq_42651904/article/details/81190456