之前在做题的时候,遇到了字符串拼接相关问题。当时用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是最好的。
本文对比分析了String、StringBuilder和StringBuffer在字符串拼接时的性能差异。详细介绍了StringBuilder和StringBuffer的工作原理,以及它们如何在内存管理和效率上优于String。适合所有需要频繁进行字符串操作的开发者阅读。
1497

被折叠的 条评论
为什么被折叠?



