StringBuffer和StringBuilder

  • StringBuffer
    所有的方法都加了synchronized - 锁;
  • StringBuilder(普遍使用)
    StringBuilder 方法和StringBuffer一致, 没有锁, 效率高
    1.构造器
    (1)StringBuilder()
    构造一个不带任何字符的字符串生成器,其初始容量为 16 个字符。
    (2)StringBuilder(String str)
    构造一个字符串生成器,并初始化为指定的字符串内容。
    2.常用方法
    (1)StringBuilder StringBuilder append(char[] str、String str、StringBuffer sb)
    将 …的字符串表示形式追加到此序列。
    (2) char charAt(int index)
    返回此序列中指定索引处的 char 值。
    (3) StringBuilder delete(int start, int end )
    移除此序列的子字符串中的字符。
    (4)int indexOf(String str)
    返回第一次出现的指定子字符串在该字符串中的索引。
    (5)int length()
    返回长度(字符数)。
    (6) StringBuilder replace(int start, int end, String str)
    使用给定 String 中的字符替换此序列的子字符串中的字符。
    (7) StringBuilder reverse()
    将此字符序列用其反转形式取代。
    (8) String substring(int start)
    返回一个新的 String,它包含此字符序列当前所包含字符的子序列。
    (9)String substring(int start, int end)
    返回一个新的 String,它包含此序列当前所包含字符的子序列。
    (10)String toString()
    返回此序列中数据的字符串表示形式。
    (11) StringBuilder insert(int offset, String str)
    将字符串插入此字符序列, offset - 偏移量。
    (12) StringBuilder delete(int start, int end)
    移除此序列的子字符串中的字符。
### 回答1: StringBufferStringBuilder 是 Java 中的字符串操作类。它们都是可变的字符序列,可用于在运行时构造字符串。 两者的主要区别在于线程安全性。StringBuffer 是线程安全的,它的每个方法都是同步的,因此可以在多线程环境中使用。StringBuilder 是非线程安全的,它的方法不是同步的,因此不能在多线程环境中使用。 因此,如果不需要线程安全,建议使用 StringBuilder,因为它比 StringBuffer 更快。如果需要线程安全,则使用 StringBuffer。 ### 回答2: StringBufferStringBuilder是Java中的两个字符串操作类,它们都可以用来处理可变的字符串。 StringBuffer是一个线程安全的类,适用于多线程环境下。它提供了多个方法来操作字符串,如添加、插入、删除、替换等。StringBuffer对象是可变的,可以在原有字符串的基础上进行修改,而不会创建新的对象。这使得在频繁修改字符串的情况下,StringBuffer比String更高效。 StringBuffer使用同步机制来保证线程安全,因此在多线程环境中频繁地操作字符串时,建议使用StringBufferStringBuilder也是一个可变的字符串类,与StringBuffer类似,它也提供了多个方法来操作字符串。然而,StringBuilder不是线程安全的,因此在单线程环境下使用效果更好。相比于StringBufferStringBuilder的操作速度更快,因为它不需要进行同步控制。 一般来说,在单线程环境下,如果需要频繁地进行字符串拼接、替换等操作,建议使用StringBuilder;而在多线程环境下,或者需要保证线程安全性时,应使用StringBuffer。 总之,StringBufferStringBuilder在处理可变字符串时都非常有效。具体使用哪个类可以根据实际情况来选择,考虑到线程安全和性能方面的需求。 ### 回答3: StringBufferStringBuilder都是Java中用于处理可变字符串的类。它们的主要区别在于线程安全性和性能。 StringBuffer是一个线程安全的类,它的所有公共方法都被synchronized修饰,因此多个线程可以同时访问一个StringBuffer对象而不会出现问题。这使得StringBuffer适用于在多线程环境中进行字符串操作的场景。然而,由于同步的代价是一定的,所以StringBuffer的性能相对较低。 StringBuilder是一个非线程安全的类,它的方法没有被synchronized修饰,因此在多线程环境中使用StringBuilder可能会出现不可预期的结果。但是,由于没有同步的开销,StringBuilder的性能比StringBuffer高很多。 因此,如果在单线程环境中进行字符串操作,推荐使用StringBuilder,因为它的性能更好。但是在多线程环境中进行字符串操作时,为了保证数据的一致性,应该使用StringBuffer。 需要注意的是,无论是StringBuffer还是StringBuilder,它们都继承自AbstractStringBuilder,并且都有append、insert、delete等方法,可以方便地对字符串进行修改。另外,它们还都重写了toString方法,可以将字符串对象转化为String类型的字符串。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值