为什么Java StringBuilder的效率要比String高?

本文探讨了Java中StringBuilder相较于String在字符串拼接时的高效性。由于String的不可变性,每次拼接都会创建新对象,而StringBuilder通过动态调整char数组实现高效拼接。文章还介绍了如何通过javap命令查看字节码指令,进一步理解优化方法。
摘要由CSDN通过智能技术生成

为什么Java StringBuilder的效率要比String高?

概述

在Java中,字符串拼接很常见,为什么总是说StringBuilder的效率要比String高呢,大概原因就是String是不可变对象,而StringBuilder在拼接时只是把字符串转为char拷贝到char[]。具体如下

String不可变

String对象不可变,则每次拼接都会创建新的String对象。即使在新的jdk有对String+的优化,仍然是效率不够高,比如每次循环拼接时都会被自动创建一个StringBuider对象来append,最后还会将该对象调用toString()方法。

具体优化方法,可以对代码编译后使用javap命令查看生成的字节码指令。

StringBuilder效率高

StringBuilder其实就是个char[],append时,是将String对象转为char后放入StringBuilder的char[]内。当长度不够放时,对该char[]扩容即可。

参考文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值