在 Java 中,StringBuffer 是 可变的字符串类,位于 java.lang 包中,主要用于频繁修改字符串内容的场景。
StringBuffer 是一个线程安全的可变字符序列。
和 String 不同,String 是不可变的(每次修改都会创建新对象),而 StringBuffer 可以在原有对象上修改。
StringBuffer sb = new StringBuffer("Hello");
sb.append(" World");
System.out.println(sb); // Hello World
String 那样频繁创建新对象synchronized 修饰StringBuilderStringBuffer sb = new StringBuffer();
sb.append("Java"); // 追加
sb.insert(0, "Hello "); // 插入
sb.replace(0, 5, "Hi"); // 替换
sb.delete(0, 2); // 删除
sb.reverse(); // 反转
sb.length(); // 长度
sb.toString(); // 转成 String
| 类 | 是否可变 | 线程安全 | 性能 | 使用场景 |
|---|---|---|---|---|
| String | ❌ 不可变 | ✅(不可变天然安全) | 低(频繁修改慢) | 少量字符串 |
| StringBuffer | ✅ 可变 | ✅ 线程安全 | 中 | 多线程字符串操作 |
| StringBuilder | ✅ 可变 | ❌ 非线程安全 | 高 | 单线程字符串操作 |
✅ 多线程环境 → StringBuffer
✅ 单线程环境 → StringBuilder(推荐)
❌ 不要频繁用 String 做拼接(如循环里)
StringBuffer sb = new StringBuffer();
for (int i = 0; i < 1000; i++) {
sb.append(i);
}
String result = sb.toString();
如果你愿意,我也可以:
StringBuffer 和 StringBuilder 源码免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。