JDK1.8源码阅读(五)Java.lang.StringBuilder

本文详细解析了StringBuilder类,包括其定义、构造方法、扩容机制及主要方法。对比String、StringBuffer,探讨了它们在单线程与多线程环境下的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

StringBuilder定义
public final class StringBuilder
    extends AbstractStringBuilder
    implements java.io.Serializable, CharSequence
{
}

StringBuilder同StringBuffer一样,被final修饰,继承AbstractStringBuilder类,实现了Serializable、CharSequence

两个接口,不同的是StringBuilder没有toStringCache。

其构造方法、扩容机制也和StringBuffer一样,默认16长度,扩容两倍+2.

public StringBuffer() {
        super(16);
    }

主要方法也都继承自AbstractStringBuilder抽象类,与StringBuffer不同的是,StringBuilder的方法没有被

synchronized关键字修饰,是线程不安全的,但是效率会比StringBuffer高。
@Override
    public StringBuilder append(Object obj) {
        return append(String.valueOf(obj));
    }

@Override
    public StringBuilder delete(int start, int end) {
        super.delete(start, end);
        return this;
    }
@Override
    public StringBuilder insert(int index, char[] str, int offset,
                                int len)
    {
        super.insert(index, str, offset, len);
        return this;
    }

 

String,StringBuffer,StringBuilder三者的区别?

1.String用来存储值得数组是final的,StringBuffer、StringBuilder的不是,所以String用来存储不可变字符串,

StringBuilder、StringBuffer用来存储可变字符串。

2.StringBuffer、StringBuilder都继承AbstractStringBuilder类,拥有相同作用的方法,不同之处是StringBuffer的方法都使用synchronized修饰,是线程安全的。StringBuilder则没有。

所以:

String用来存储不可变字符串;

单线程环境下处理可变字符串:StringBuilder;

多线程环境下处理可变字符串:StringBuffer;


 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值