学习 Java 的 StringBuffer 字符串缓冲,可以从「是什么 → 为什么用 → 怎么用 → 和 String / StringBuilder 的区别 → 常见练习」这个思路来学。下面我给你一个系统、适合初学者的学习路线。
StringBuffer 是一个可变的字符串缓冲区,线程安全,适合频繁修改字符串内容。
String s = "a";
s += "b";
String 的问题:
String 是不可变的✅ StringBuffer 的优势:
StringBuffer sb = new StringBuffer(); // 空缓冲区
StringBuffer sb2 = new StringBuffer("abc"); // 初始内容
sb.append("Hello");
sb.append(" World");
System.out.println(sb); // Hello World
sb.insert(5, ",");
// 在索引 5 插入
sb.delete(5, 6); // 删除索引 5 到 6(左闭右开)
sb.deleteCharAt(0); // 删除指定位置字符
sb.replace(0, 5, "Hi");
sb.reverse();
String result = sb.toString();
| 对比项 | String | StringBuffer | StringBuilder |
|---|---|---|---|
| 是否可变 | ❌ 不可变 | ✅ 可变 | ✅ 可变 |
| 线程安全 | ✅(安全) | ✅(安全) | ❌ 不安全 |
| 性能 | 慢 | 中 | 快 |
| 使用场景 | 少量字符串 | 多线程 | 单线程 |
✅ 记忆口诀:
单线程用 StringBuilder,多线程用 StringBuffer,常量用 String
✅ 适合以下场景:
❌ 不适合:
❌ 不推荐(String)
String s = "";
for (int i = 0; i < 10000; i++) {
s += i;
}
✅ 推荐(StringBuffer)
StringBuffer sb = new StringBuffer();
for (int i = 0; i < 10000; i++) {
sb.append(i);
}
String result = sb.toString();
StringBuffer sb = new StringBuffer("abcdef");
sb.reverse();
System.out.println(sb); // fedcba
StringBuffer 拼接 1~100"Java" 转成 "avaj"StringBuffer 为什么线程安全?
synchronized 修饰StringBuffer 和 StringBuilder 的区别?
什么时候不用 StringBuffer?
如果你愿意,我可以:
你想从哪一块继续深入?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。