stringbuilder支持在指定索引处高效插入(insert)和删除(delete/deletecharat)字符,原地修改、不生成新对象;insert在offset位置插入并右移后续字符,delete删除[start,end)区间字符,replace可一步完成替换。

StringBuilder 提供了直接在指定索引位置插入和删除字符的方法,不需要转成数组或字符串再拼接,操作高效且原地修改。
动态插入字符(insert)
使用 insert(int offset, String str) 方法,把字符串插入到指定索引位置(offset 从 0 开始)。插入后原内容自动后移,长度增加。
- offset 必须满足 0 ≤ offset ≤ length(),等于 length() 表示插在末尾
- 支持插入 char、int、boolean、char[] 等多种类型,底层都会转为字符串处理
- 例如:sb.insert(2, "XY") 在索引 2 处插入 "XY",原第 2 位及之后字符整体右移
动态删除字符(delete / deleteCharAt)
有两种常用方式:
Java开发手册规约集合,基于阿里巴巴Java开发手册(嵩山版)。 涵盖7大维度:编程规约、异常日志、单元测试、安全规约、MySQL数据库、工程结构、设计规约。 当用户需要:(1) 编写或审查Java代码 (2) 检查命名/代码规范 (3) 处理异常和日志 (4) 编写单元测试 (5) 安全编码 (6) 数据库设...
- delete(int start, int end):删除 [start, end) 区间(含 start,不含 end)的字符。注意 end 可等于 length()
- deleteCharAt(int index):仅删除单个字符,等价于 delete(index, index + 1)
- 两个方法都要求索引合法,否则抛 StringIndexOutOfBoundsException
插入与删除组合操作示例
比如要把 "HelloWorld" 中的 "oW" 替换为 "X",可先删后插:
- sb.delete(4, 6); // 删除索引 4~5 的 "oW",剩下 "Hellorld"
- sb.insert(4, "X"); // 在索引 4 插入 "X",得到 "HelloXrld"
也可以用 replace(int start, int end, String str) 一步完成:sb.replace(4, 6, "X"),效果相同但更简洁。
注意事项
- 所有操作均改变原 StringBuilder 对象,不生成新对象
- 插入/删除时若索引越界会立即报错,建议操作前用 length() 校验范围
- 如果频繁在开头或中间增删,性能仍优于 String 拼接,但极端场景(如大量随机位置操作)可考虑 LinkedList
+ 构建,不过绝大多数情况 StringBuilder 完全够用
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










