StringBuilder与“+”加号拼接字符串区别

字符串拼接在开发过程中是非常平凡的常用的有三种方式
1、加号拼接(str+“123”)
2、StringBuilder拼接
3、StringBuffer拼接
StringBuffer是保证线程安全的,效率是比较低的,更多的应用场景是不会涉及到线程安全,所以会选择StringBuilder效率会高一些,那么问题来了StringBuilder和“+”谁的效率更高呢?

public class Test {
 public static void main(String[] args) { 
 	new Test3().m1();
 	 new Test3().m2();
  }
	  public void m1(){
  			 String s1 = "123"; 
		  	 String s2 = "456";
		  	 String s3 = s1 + s2;
			 System.out.println(s3); 
	}
	
	public void m2(){ 
 		String s1 = "123";
		 String s2 = "456"; 
		 StringBuilder sb = new StringBuilder(); 
		 sb.append(s1); 
		 sb.append(s2); 
		 String s3 = sb.toString(); 
		 System.out.println(s3); 
	 } 
 }

通过查看字节码的方式看到以上程序使用加号在编译成字节码后编译的内容是StringBuilder 所以"+"和StringBuilder编译之后还是StringBuilder,所以效率是一样的

public class Test4 { 
	public static void main(String[] args) {
	 new Test4().m1();
	  new Test4().m2(); 
	 }
	 public void m1(){ 
	 String str = "";
	 for (int i = 0; i < 5; i++){ 
	 		str = str + i; 
	 }
	 System.out.println(str);
   }
	  public void m2(){
	   StringBuilder sb = new StringBuilder(); 
	   for (int i = 0; i < 5; i++) { 
	   sb.append(i); 
	   }
	   System.out.println(sb.toString());
	   } 
}

在这里插入图片描述
在这里插入图片描述
通过查看字节码发现 m1的方法内每次循环都会船舰一个StringBuilder对象,效率低于m2()方法
总结 “+”和StringBuilder两种拼接方式是一样的,所以效率是一样的,但是在for循环中,使用“+”号拼接,每循环一次都要重新创建一个StringBuilder对象用来存储新的字符串,所以在for循环中 StringBuilder效率更高

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值