java-StringBuilder

java-StringBuilder

StringBuilder类的理解

  1. 一个可变的字符序列。此类提供一个与 StringBuffer兼容的APl,但不保证同步( String Builder不是线程安全)。该类被设计用作 String Buffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候。如果可能,建议优先采用该类,因为在大多数实现中,它比 String Buffer要快
  2. 在 StringBuilder上的主要操作是 append和 insert方法,可重载这些方法,以接受任意类型的数据。
  3. StringBuffer的直接父类是 Abstract String Builder
  4. String Buffer实现了 Serializable,即 String Buffer的对象可以串行化
  5. 在父类中 AbstractString Builder有属性char[]value,不是 final。该 value数组存放字符串内容,引出存放在堆中
  6. StringBuffer是一个fina类,不能被继承
  7. 因为 StringBuffer字符内容是存在 char[]value,所有在变化(增加/删除)不用每次都更换地址(即不是每次创建新对象),所以效率高于 String

StringBuffer、StringBuilder和String的比较

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

StringBuffer、StringBuilder和String的选择

  1. 使用的原则
    • 如果字符串存在大量的修改操作,一般使用 String Buffer或 String Builder
    • 如果字符串存在大量的修改操作,并在单线程的情况使用 String Builder
    • 如果字符串存在大量的修改操作,并在多线程的情况使用 String Buffer
    • 如果我们字符串很少修改,被多个对象引用,使用tng,比如配置信息等
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

艺术留白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值