StringBuilder类

1、基本介绍

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

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

2、详细介绍

(参考下图)

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

3、StringBuilder常用方法

StringBuffer和StringBuilder均代表可变的字符序列,方法是一样的,所以使用和StringBuffer一样。

方法参考:StringBuffer类-CSDN博客

4、String、StringBuffer和StringBuilder的比较

效率:StringBuilder>StringBuffer>String

  1. StringBuffer和StringBuffer非常类似,均代表可变的字符序列,而且方法一样。

  2. String:不可变字符序列,效率低,但是复用率高。

  3. StringBuffer:可变字符序列、效率较高(增删)、线程安全

  4. StringBuilder:可变字符序列、效率最高,线程不安全

  5. String使用注意说明:

string s ="a";

//创建了一个字符串

s+="b";

//实际上原来的“a”字符串对象已经丢弃了,现在又产生了一个字符串s+"b"(也就是"ab")。如果多次执行这些改变串内容的操作,会导致大量副本字符串对象存留在内存中,降低效率。如果这样的操作放到循环中,会极大影响程序的性能 =>   结论:如果我们对String 做大量修改,不要使用String。

String、StringBuffer和StringBuilder的选择

使用的原则,结论:

1、如果字符串存在大量的修改操作,一般使用 StringBuffer 或StringBuilder。

2、如果字符串存在大量的修改操作,并在单线程的情况,使用 StringBuilder。

3、如果字符串存在大量的修改操作,并在多线程的情况,使用 StringBuffer。

4、如果我们字符串很少修改,被多个对象引用,使用String,比如配置信息等。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值