String StringBuilder StringBuffer 简略分析

之前在做题的时候,遇到了字符串拼接相关问题。当时用String,内存消耗和事件消耗都很大,StringBuilder就没有这种问题,于是查了一些资料,做个小总结。

String

String内部记录值的变量用final修饰,值不可以被直接改变,在拼接的时候每次都要创建新的字符串,耗费一定的时间和空间。在进行大量字符串操作的时候会很难受。

在这里插入图片描述

StringBuffer 和 StringBuilder

当对字符串进行修改的时候,推荐使用 StringBuffer 和 StringBuilder 类。

这两个类都继承了AbstractStringBuilder,也都实现了Serializable和CharSequence接口

其中记录值的变量没有final修饰。

在这里插入图片描述
这样一来,就可以直接实现字符串的拼接,节省时间和空间

  • 拼接通过append方法实现,底层进行数组的扩容、追尾增加时使用native方法arraycopy。扩容默认为原数值*2+2。

  • StringBuilder是JKD1.5的新类,其性能比StringBuffer要好。

  • StrringBuilder是线程不安全的,StringBuffer是线程安全的。

StringBuffer中大部分有synchronized修饰

在这里插入图片描述
所以综合来看StringBuffer更全面一些,但是如果在日常普通开发或者像我做题的时候,用StringBuilder是最好的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值