字符串拼接方式

1年前 (2017-08-21) wang JAVA, 技术杂谈 0评论 已收录 239℃ 浏览数:88

我们首先测试, String 的 +=  , String 的 concat 和 StringBuilder 的 append方法。运行五万次拼接所用的时间。

	public static void main(String[] args) throws UnknownHostException {
		
		String a = "";
		
		long begin = new Date().getTime();
		
		for(int i = 0 ; i < 50000; i ++){
			a += "1";
		}
		
		long end = new Date().getTime();
		
		System.out.println(end - begin);
	}
	public static void main(String[] args) throws UnknownHostException {
		
		String a = "";
		
		long begin = new Date().getTime();
		
		for(int i = 0 ; i < 50000; i ++){
			a = a.concat("1");
		}
		
		long end = new Date().getTime();
		
		System.out.println(end - begin);
	}
	public static void main(String[] args) throws UnknownHostException {
		
		StringBuilder b = new StringBuilder();
		
		long begin = new Date().getTime();
		
		for(int i = 0 ; i < 50000; i ++){
			b.append("1");
		}
		
		long end = new Date().getTime();
		
		System.out.println(end - begin);
	}

+= 用了 881ms, contant用了521ms, append用了7ms

Java 对 "+" 拼接字符串进行了优化,它会使用StringBuilder的append方法进行追加,但是它最终是使用toString方法转换为字符串。

str = new StringBuilder(str).append("1").toString();

每次循环都创建了对象,同时每次执行完都会调用toString()方法。

博主

Just do it. Now or never.

相关推荐

嗨、骚年、快来消灭0回复。