java 字符串拼接方法性能大比拼

本文对比了JAVA中四种字符串拼接方法:“+”拼接、StringBuilder、String.format及MessageFormat.format的性能,并通过实验得出结论:使用“+”进行字符串拼接性能最佳。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于在实际项目中经常会打log,这 就要用到字符串拼接, 本文测试了JAVA中的四种字符串拼接方法的性能。

 

1.使用“+”拼接字符串

	public static String f1(String p1, String p2, String p3){
		return "["+p1+"]["+p2+"]["+p3+"]";
	}

 2.使用StringBuilder拼接字符串

	public static String f2(String p1, String p2, String p3){
		StringBuilder sb = new StringBuilder();
		sb.append("[").append(p1).append("]");
		sb.append("[").append(p2).append("]");
		sb.append("[").append(p3).append("]");
		return sb.toString();
	}

 3.使用String.format拼接字符串

	public static String f3(String p1, String p2, String p3){
		return String.format("[%s][%s][%s]", p1, p2, p3);
	}

 4.使用MessageFormat.format拼接字符串

	public static String f4(String p1, String p2, String p3){
		return MessageFormat.format("[{0}][{1}][{2}]", p1, p2, p3);
	}

 测试:

	public static void main(String[] args) {
		int count = 100000;
		String bigStr = "2015-11-23 18:51:15,661 [nioEventLoopGroup-2-1] ERROR test_t1 [] - [test_t1][ChannelHandler_exceptionCaught]远程主机强迫关闭了一个现有的连接。";
		
		long start = System.currentTimeMillis();
		for(int i=0; i<count;i ++){
			f1("11111", "222222", bigStr);
		}
		long end = System.currentTimeMillis();
		System.err.println("f1 : " + (end - start));
		start = System.currentTimeMillis();
		for(int i=0; i<count;i ++){
			f2("11111", "222222", bigStr);
		}
		end = System.currentTimeMillis();
		System.err.println("f2 : " + (end - start));
		start = System.currentTimeMillis();
		for(int i=0; i<count;i ++){
			f3("11111", "222222", bigStr);
		}
		end = System.currentTimeMillis();
		System.err.println("f3 : " + (end - start));
		start = System.currentTimeMillis();
		for(int i=0; i<count;i ++){
			f4("11111", "222222", bigStr);
		}
		end = System.currentTimeMillis();
		System.err.println("f4 : " + (end - start));
	}

 测试结果:(单位毫秒)

f1 : 18

f2 : 40

f3 : 386

f4 : 134

 

结论:使用“+”拼接字符串性能最好,使用String.format性能最差,所以还是老老实实用“+”来拼字符串吧,虽然难看点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值