Java String, StringBuffer, StringBuilder区别 个人简单总结

Java String, StringBuffer, StringBuilder区别 个人简单总结

String类

String类的特点

String类是不可改变的 Immutable的典型实现.
线程安全.

  • String类的优点
  1. 如果有大量相同字符串存到不同的变量操作需求使用 String类能节省内存提高性能.
    例如 以下两个变量内存指向是同一个, 也就是说只开辟了一个内存地址.

String A = "Hello":
String B = "Hello";

  1. 因有不可改变的特点创建的时候hash被缓存了下来, 不需要重复计算, 使得很适合做 Map的键性能优于其它类型.
  • String类的缺点
  1. 拼接字符串时会产生很多字符串对象导致性能下降.

Tip: 简单拼接 例如 String s = “A” + “B” + “C” 像这样的 JVM一般自动通过 StringBuilder append处理而不产生多于中间对象, 但不建议这样用.

StringBuffer类

StringBuffer类的特点

  1. 线程安全.
  2. 可修改的字符串对象, 减少创建和自动垃圾回收成本
  3. 默认大小是16个字符, 然后按需自动扩容

线程安全是有性能代价的, 但是大多数情况字符串拼接不需要线程安全的, 这时候 JDK1.5发布了 StringBuilder

StringBuilder类

StringBuilder类的特点

  1. 线程不安全.
  2. 可修改的字符串对象, 减少创建和自动垃圾回收成本
  3. 默认大小是16个字符, 然后按需自动扩容

总结

  1. 字符串拼接和删除等操作不多时优先使用String.
  2. 字符串拼接和删除多且必须线程安全时使用 StringBuffer.
  3. 字符串拼接和删除多, 可以线程不安全就使用 StringBuilder.

如果您觉得有帮助,欢迎点赞哦 ~ 谢谢!!

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值