String,StringBuilder,StringBuffer区别以及使用场景

笔者经常忘记三者之间的区别,下面自己总结一番,画一个表格来展示

Item "+"区别 多线程 性能 使用场景 优化
String 不可变类,重新创建字符串 不安全 拼接时,性能差 操作少量数据,字符串不变时
StringBuilder 可变类,原字符串基础上生成字符串 不安全 性能最好(比StringBuffer高10%-15%) 单线程操作大量数据(方法内部,用完回收) 尽可能指定容量(默认:16,不超过16个字符不用指定),不指定显著降低性能
StringBuffer 可变类,原字符串基础上生成字符串 安全 性能好 主要用在全局变量中,多线程下安全 同上

在现实的模块化编程中,负责某一模块的程序员不一定能清晰的判断该模块是否会放入多线程的环境中运行,除非确定系统的瓶颈是在StringBuffer上,并且确定你的模块不会运行在多线程模式下,才可以采用StringBuilder,否则还是用StringBuffer

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容