StringBuilder

基本介绍

  1. 一个可变的字符序列。此类提供个与StringBuffer兼容的API,但不保证同步(StringBuilder不是线程安全)。该类被设计用作StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候。如果可能,建议优先采用该类,因为在大多数实现中,它比StringBuffer要快。

  2. 在StringBuilder上的主要操作是append和insert方法,可重载这些方法,以接受任意类型的数据。

细致一点

  1. StringBuilder 继承AbstractStringBuilder 类
  2. 实现了Serializable , 说明StringBuilder对象是可以串行化(对象可以网络传输,可以保存到文件)
  3. StringBuilder 是final类,不能被继承
  4. StringBuilder 对象字符序列仍然是存放在其父AbstractStringBuilder的 char[] value;因此,字符序列在堆中
  5. StringBuilder的方法,没有做互斥的处理,即没有synchronized关键字,因此在单线程情况下使用。

String、StringBuffer、StringBuilder比较

  1. StringBuilder和StringBuffer非常类似,均代表可变的字符序列,而且方法也一样
  2. String:不可变字符序列,效率低,但是复用率高。
  3. StringBuffer:可变字符序列、效率较高(增删)、线程安全
  4. StringBuilder:可变字符序列、效率最高、线程不安全
  5. String使用注意说明: String s = 'a';//创建了一个字符串 S += "b";//实际上原来的"a"字符串对象已经丢弃,又产生了一个字符串s+"b"(也就是"ab")。如果多次执行改变串内容的操作,会导致大量副本字符串对象留在内存中,降低效率。如果这样的操作放在循环中,会极大程度影响程序性能。
  6. 结论:如果对String做大量修改,就不要使用String

alt text


本文章使用limfx的vscode插件快速发布