StringBuffer与StringBuild的区别

本文探讨了Java中StringBuffer和StringBuilder的区别。StringBuffer线程安全但效率较低,适合多线程环境;StringBuilder非线程安全但速度更快,适用于单线程。两者都用于字符串修改,避免了String的不可变性导致的性能问题。了解何时使用它们对于优化Java代码至关重要。
摘要由CSDN通过智能技术生成

前言:What?Why?hoW?

1.StringBuffer和StringBuild是什么?它们之间的区别又在哪?

2.StringBuffer为什么线程安全?为什么StringBuild更快?

3.StringBuffer和StringBuild怎么使用?

1、StringBuffer和StringBuild是什么?它们之间的区别又在哪?

  • 都是java.lang包里面的一个公共类(public class)

  • 都继承自AbstractStringBuilder,实现java.io.Serializable, CharSequence

  • 都是主要用于对字符串进行修改,对对象本身进行操作,而不是生成新的对象

  // StringBuffer
  java.lang public final class StringBuffer 
      extends AbstractStringBuilder 
      implements java.io.Serializable, CharSequence
  //StringBuild
  java.lang public final class StringBuilder
  	extends AbstractStringBuilder
  	implements java.io.Serializable, CharSequence

img
2.为什么StringBuffer线程安全,为什么StringBuild更快?

  • StringBuffer中的方法都是通过synchronized来修饰的,同一时间只能被一个线程访问,因此线程安全,也正是因为线程同步,StringBuffer相比StringBuild的效率就会慢一些

  • 以append方法为例:

    // 参数类型:
    // Object、String、StringBuffer、AbstractStringBuilder
    // CharSequence
    // CharSequence s, int start, int end
    // char[]、boolean
    // char、int、long、float、double
    @Override
    public synchronized StringBuffer append(Object obj) {
         
        toStringCache = null;
        super.append(String.valueOf(obj));
        return this;
    }
    //StringBuild
    public StringBuilder append(Object obj) {
         
        super.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值