Java | StringBuilder源码分析

本文详细分析了Java中的StringBuilder类,包括其源码实现。StringBuilder是一个可变的字符序列,非线程安全,性能优于线程安全的StringBuffer。文章探讨了其定义、主要变量、构造方法、核心方法如append(), delete(), replace()以及charAt()和toString()的工作原理,并强调了在容量不足时的扩容策略。" 106184058,7243097,PCIe/CXL详解:CPU与设备的高速交互机制,"['硬件接口', '内存访问', '数据处理', '协议标准', '计算机架构']
摘要由CSDN通过智能技术生成

前言

StringBuilder类表示一个可变的字符序列。StringBuilder的API与StringBuffer互相兼容,但是StringBuilder是非线程安全的。在可能的情况下,建议优先使用StringBuilder,因为在大多数实现中它比StringBuffer更快。

相关知识

源码分析

定义

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

StringBuilder类被 final 所修饰,因此不能被继承。

StringBuilder类继承于 AbstractStringBuilder类。实际上,AbstractStringBuilder类具体实现了可变字符序列的一系列操作,比如:append()、insert()、delete()、replace()、charAt()方法等。值得一提的是,StringBuffer也是继承于AbstractStringBuilder类。

StringBuilder类实现了2个接口:

  • Serializable 序列化接口,表示对象可以被序列化。
  • CharSequence 字符序列接口,提供了几个对字符序列进行只读访问的方法,比如:length()、charAt()、subSequence()、toString()方法等。

主要变量

// AbstractStringBuilder.java

char[] value;

int count;

这两个变量是定义在AbstractStringBuilder类中的。其中:

  • value 用来存储字符序列中的字符。value是一个动态的数组,当存储容量不足时,会对它进行扩容。
  • count 表示value数组中已存储的字符数。

构造方法

public StringBuilder() {
   
    super(16);
}

public StringBuilder(int capacity) {
   
    super(capacity);
}

public StringBuilder(String str) {
   
    super(str.length() + 16);
    append(str);
}

public StringBuilder(CharSequence seq) {
   
    this(seq.length() + 16);
    append(seq);
}

// AbstractStringBuilder.java
AbstractStringBuilder(int capacity) {
   
    value = new char[capacity];
}

StringBuilder类提供了4个构造方法。构造方法主要完成了对value数组的初始化。其中:

  • 默认构造方法设置了value数组的初始容量为16。
  • 第2个构造方法设置了value数组的初始容量为指定的大小。
  • 第3个构造方法接受一个String对象作为参数,设置了value数组的初始容量为String对象的长度+16,并把String对象中的字符添加到value数组中。
  • 第4个构造方法接受一个CharSequence对象作为参数,设置了value数组的初始容量为CharSequence对象的长度+16,并把CharSequence对象中的字符添加到value数组中。

append()方法

@Override
public StringBuilder append(boolean b) {
   
  • 7
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值