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

Java String, StringBuffer, StringBuilder区别

  • String类
    • String类的特点
  • StringBuffer类
    • StringBuffer类的特点
  • StringBuilder类
    • 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. 可修改的字符串对象, 减少创建和自动垃圾回收成本

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

StringBuilder类

StringBuilder类的特点

  1. 线程不安全.
  2. 可修改的字符串对象, 减少创建和自动垃圾回收成本

总结

  1. 字符串拼接和删除等操作不多时优先使用String.

  2. 字符串拼接和删除多且必须线程安全时使用 StringBuffer.

  3. 字符串拼接和删除多, 可以线程不安全就使用 StringBuilder.

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

你可能感兴趣的:(Java,基础知识)