String拼接方式


String 字符串的拼接方式有以下几种:“+”号拼接、concat()、StringBuilder、StringBuffer

先说结论,就性能方面而言,建议使用顺序为 StringBuilder > StringBuffer > concat() > "+"

 

StringBuilder 和 StringBuffer 都是可变字符串,但StringBuilder不是线程安全的,适用于单线程环境,StringBuffer 是线程安全的,用于多线程环境。

两者的实现是封装一个可修改的字符数组,字符数组中可以有空位置未被使用,有实例变量记录已使用的字符个数,append方法会直接拷贝字符到内部的字符数组,如果长度不够还可以拓展。

StringBuilder 方法的实现

StringBuffer 在方法中加上synchronized关键字,即加锁保证线程安全。

“+”号拼接实现原理是将String转成了StringBuilder后,使用其append方法进行处理的。

1 String str0 = "a";
2 StringBuilder sb = new StringBuilder();
3 sb.append(str0).append("b");
4 String str1 = sb.toString();

 

concat() 拼接首先创建一个字符数组,长度是已有字符串和待拼接字符串的长度之和,再把两个字符串的值复制到新的字符数组中,并使用这个字符数组创建一个新的String对象并返回。

经过concat方法,其实是new了一个新的String。

 

从0到10万的所有数字进行拼接,得到如下结果,可以看到StringBuilder效率最高

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM