StringBuilder直接继承AbstractStringBuilder,复用其全部核心逻辑,仅提供无锁、高性能的字符串拼接能力;它重写构造方法、toString、equals和hashCode,不加同步,与StringBuffer共享底层实现但语义上专注线程不安全场景。

StringBuilder 直接继承 AbstractStringBuilder,不重写核心逻辑,只提供线程不安全但高性能的字符串拼接能力。
继承关系很直接
StringBuilder 是一个 final 类,声明为:
public final class StringBuilder extends AbstractStringBuilder
它没有重新实现 append、insert、delete 等关键方法,而是完全复用父类 AbstractStringBuilder 中已有的实现。AbstractStringBuilder 本身是 package-private(包级私有)的抽象类,不对外暴露,专为 StringBuffer 和 StringBuilder 共享底层逻辑而设计。
只覆盖了构造方法和 toString 等少量方法
StringBuilder 主要做了三件事:
立即学习“Java免费学习笔记(深入)”;
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 提供 public 构造方法(如无参、传 String、传 capacity),内部调用父类对应构造器初始化 value 数组和 count
- 重写 toString():直接 new String(value, 0, count),避免拷贝额外空间
- 重写 equals() 和 hashCode():按字符内容比较,不继承 Object 默认行为
不加锁,靠继承获得全部能力
AbstractStringBuilder 已经实现了所有可变字符串操作的底层逻辑,比如:
- append(char) → ensureCapacityInternal → 扩容数组 → 赋值
- insert(int, String) → 检查索引 → 扩容 → 数组复制移位 → 填入字符
- delete(int, int) → 移动后续字符 → 更新 count
StringBuilder 不做同步控制,也不改写这些流程,只是“放心使用”。而 StringBuffer 的唯一区别就是:它继承同一个 AbstractStringBuilder,但把所有 public 方法都加上了 synchronized。
为什么这样设计?
这是典型的模板复用模式:
- 避免 StringBuffer 和 StringBuilder 复制大量相同代码
- 把可变字符串的核心算法(扩容策略、字符数组管理、边界检查)统一收口到包内基类
- 子类只需专注语义差异:是否线程安全、是否允许继承、是否重写某些行为
这种设计让 JDK 字符串构建类既高效又易于维护,也体现了“复用优于重复”的工程思想。

















