温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

StringBuffer容量怎么设置

发布时间:2026-10-06 04:27:35 来源:亿速云 阅读:95 作者:小樊 栏目:编程语言

在 Java 中,StringBuffer(以及 StringBuilder)的**容量(capacity)**指的是内部字符数组的大小,而不是字符串的长度(length)。合理设置容量可以减少扩容带来的性能开销。


一、在创建时设置容量

1️⃣ 指定初始容量(推荐方式)

StringBuffer sb = new StringBuffer(100);
  • 创建一个初始容量为 100 的 StringBuffer
  • 当内容超过 100 时,会自动扩容

2️⃣ 使用字符串初始化(容量 = 字符串长度 + 16)

StringBuffer sb = new StringBuffer("hello");
  • 初始容量 = "hello".length() + 16 = 21

3️⃣ 默认构造方法

StringBuffer sb = new StringBuffer();
  • 默认容量为 16

二、运行中手动设置 / 调整容量

1️⃣ 确保最小容量(不会缩小)

sb.ensureCapacity(200);
  • 如果当前容量 < 200,则扩容
  • 如果 ≥ 200,不变化

2️⃣ 查看当前容量和长度

int capacity = sb.capacity(); // 当前容量
int length = sb.length();     // 当前字符数

3️⃣ 手动扩容(间接方式)

Java 没有 setCapacity(),但可以通过:

sb.ensureCapacity(500);

4️⃣ 收缩容量(可选优化)

sb.trimToSize(); // 仅 StringBuilder 有,StringBuffer 没有

⚠️ StringBuffer 没有 trimToSize()


三、扩容规则(了解即可)

当容量不足时,通常按以下规则扩容:

新容量 = 旧容量 * 2 + 2

四、使用建议 ✅

  • 已知大致长度时:直接指定容量,提升性能
    StringBuffer sb = new StringBuffer(expectedLength);
    
  • 拼接大量字符串时:避免频繁扩容
  • 线程安全:StringBuffer 是线程安全的,StringBuilder 更快(非线程安全)

如果你愿意,我也可以帮你:

  • 对比 String / StringBuffer / StringBuilder
  • 写一个性能对比示例
  • 根据业务场景推荐容量大小
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手