Java字符串不可变,插入字符需新建字符串;推荐用StringBuilder的insert()方法高效实现,或用substring拼接;需校验索引有效性,避免异常。

Java 中字符串是不可变的,不能直接在指定索引处插入字符。必须创建新字符串来实现“插入”效果,常用方法是使用 StringBuilder(推荐)或字符串拼接。
用 StringBuilder 插入(最常用、高效)
StringBuilder 是可变的,提供 insert(int offset, char c) 方法,直接在指定索引位置插入单个字符。
示例:
String original = "abcde"; StringBuilder sb = new StringBuilder(original); sb.insert(2, 'X'); // 在索引 2 处插入 'X'(即 'c' 前) String result = sb.toString(); // "abXcde"
注意:索引从 0 开始,且必须满足 0 ≤ offset ≤ string.length()(允许插在末尾)。
立即学习“Java免费学习笔记(深入)”;
用字符串拼接(适合简单场景、少量操作)
将原字符串按索引切分为前后两部分,再拼接:str.substring(0, index) + ch + str.substring(index)。
示例:
String original = "hello"; int index = 3; char ch = 'X'; String result = original.substring(0, index) + ch + original.substring(index); // "helXlo"
⚠️ 注意:substring(index) 从索引开始到结尾,不会越界(即使 index == original.length() 也返回空串)。
处理边界和异常
插入前建议校验索引有效性,避免 StringIndexOutOfBoundsException:
- 索引小于 0 → 抛异常或前置插入
- 索引大于字符串长度 → 抛异常或后置追加(需明确业务逻辑)
- 推荐统一检查:
if (index s.length()) throw new IllegalArgumentException(...);
插入多个字符或字符串
StringBuilder.insert() 同样支持插入字符串、char 数组等:
-
sb.insert(2, "YZ")→ 在索引 2 插入两个字符 -
sb.insert(0, "START")→ 在开头插入 -
sb.insert(sb.length(), "END")→ 在末尾插入(等价于append)


















