Java中如何高效的拼接字符串

目录

写在前面

这是一篇非常基础的文章,将会演示如何使用Java正确高效的拼接字符串。
这些问题也是我们应该注意的基础的性能优化技巧。

常规的字符串拼接方法

  • 使用’+‘操作符连接字符串

平时我们在开发中一般都是直接的这样去拼接字符串。

String newString = "Hello " + "World"; // Hello World

+’这个操作符代表将两个字符变量的内容相加,也就是连接在一起。但是这个操作是很低效的,上面的例子中只有两个字符串的时候还不会感觉到什么性能问题。但是如果是连接数十个甚至更多个字符串的时候,你就知道了为什么说这个操作符会影响性能。Effecti Java(第二版)中第51条中明确的说过,为连接n个字符串而重复的使用字符串连接操作符,需要n的平方级的时间。原因是因为Java中的String类型也就是字符串设计为不可变的类型,并不支持动态扩展,所以n个字符串被连接在一起的时候,它们的内容都要被拷贝,所以需要n的平方级的时间。

  • 使用StringBuilder连接字符串

为了解决上述的平方级的时间问题,我们可以使用Java提供的StringBuilder来拼接字符串,本文不讨论多线程问题,所以不会去比较StringBuilder和StringBuffer的区别,其实简单的说,StringBuffer设计为线程安全的,适合多线程的使用,更多的相关知识可以参考其他文章。当然,字符串的数量不多的时候,可以直接使用’+‘拼接,但是注意,就算拼接3个字符串需要9次复制操作了,所以推荐2个以上可以考虑StringBuilder了。StringBuilder的操作需要的时间是线性增加的,因为调用StringBuilder.append方法不会去拷贝所有的字符串。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值