Java 的字符串连接与 StringBuilder 的使用

Java 的字符串连接与 StringBuilder

作为一名Java程序员,当看到下面的代码时,第一反应可能是:为什么要用字符串相加?得用 StringBuilder 啊,不然性能有问题。因为在进行字符串连接操作时,可能会创建过多的中间对象。很多网上的资料也会强调这一点。

相对于字符串连接操作来说,使用 StringBuilder 的做法,并不是很直观。要首先创建一个 StringBuilder 对象,再使用 append 方法来添加字符串。直接的字符串连接,不仅写起来简单,可读性也更好。

你可能会觉得,必须要为了性能而牺牲代码的可读性。

03150d28e10e3193e4aeebe826732747.png

事实上,这种想法已经过时了。以JDK 8为例,用javap工具查看一下生成的字节代码就会发现:Java编译器已经自动把字符串连接操作转换成了 StringBuilder 的 append 方法调用,因此完全不需要开发人员来处理。

acaf5b8e43820bd051214ec32fb9cc80.png

实际上,JDK 7所生成的字节代码,就已经采用这种做法了。与 JDK 8 生成的字节代码是相同的。

16b4d3f5b7c0c81fc4739612e5df1230.png

值得一提的是,从JDK 9开始,编译器生成的字节代码改为了使用 invokedynamic 指令。

cdfb5ec202c29f6fe9ca4188eae089c4.png

总而言之,在Java代码中,并不需要对字符串连接操作进行特别的处理。怎么方便就怎么写。不用担心性能,交给编译器去处理即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值