Java StringBuilder的常用知识点
目录JavaStringBuilder常用知识点一、为什么需要StringBuilder1. String的致命缺点不可变2. StringBuilder的核心优势可变二、StringBuilder的三种构造方法三、核心常用方法1. append() 拼接内容使用频率最高2. insert() 插入内容3. delete() / deleteCharAt() 删除内容4. reverse() 字符串反转考试高频5. length() 获取长度6. toString() 转为String类型必备收尾方法四、底层扩容规则五、易错点1. 不要用StringBuilder做等值判断2. 循环拼接优先用StringBuilder3. 区分长度和容量六、实战综合案例七、全文总结JavaStringBuilder常用知识点用String拼接字符串循环多了程序就变慢、效率极低。今天就给大家详解Java中高效字符串操作工具——StringBuilder它是解决字符串频繁修改、拼接问题的核心类也是期末考试、课后作业、基础项目的高频考点。一、为什么需要StringBuilder1. String的致命缺点不可变Java中的String是不可变字符串一旦创建内容就无法修改。我们平时看似的拼接、修改操作本质都是创建新的字符串对象旧对象会被废弃占用内存、降低程序效率。举个简单的例子String str Java; str str 学习; // 看似修改了str实际是新建了一个Java学习对象旧的Java被丢弃如果在循环中频繁拼接字符串会产生大量冗余对象造成严重的内存浪费程序运行速度大幅下降。2. StringBuilder的核心优势可变StringBuilder是可变字符串容器创建对象后可以直接对原有内容进行拼接、插入、删除、反转不会产生新对象极大提升字符串操作效率尤其适合频繁修改字符串的场景。两者核心对比String不可变、线程安全、效率低、适合少量固定字符串StringBuilder可变、线程不安全、效率极高、适合频繁拼接/修改字符串单线程场景小知识点还有一个StringBuffer类功能和StringBuilder几乎一致是线程安全的但效率更低。大一阶段99%场景优先使用StringBuilder即可。二、StringBuilder的三种构造方法StringBuilder属于java.lang包无需手动导包直接创建对象即可大一常用的只有3种构造方法// 1. 空参构造默认容量16个字符最常用 StringBuilder sb1 new StringBuilder(); // 2. 指定初始容量自定义缓冲区大小适合预知字符串长度的场景 StringBuilder sb2 new StringBuilder(30); // 3. 带初始字符串创建对象并赋值 StringBuilder sb3 new StringBuilder(大一Java学习);简单理解容量是底层缓冲区的大小长度是当前字符串的实际字符数容量 ≥ 长度当字符数超过容量时会自动扩容。三、核心常用方法StringBuilder的所有核心方法都支持链式编程1. append() 拼接内容使用频率最高作用在字符串末尾追加内容支持字符串、数字、字符、布尔值等所有数据类型替代低效的 拼接。public class Test { public static void main(String[] args) { StringBuilder sb new StringBuilder(); // 链式拼接支持任意类型 sb.append(Java).append(入门).append(2026).append(true); System.out.println(sb); // 输出Java入门2026true } }2. insert() 插入内容作用在指定下标位置插入内容下标从0开始灵活修改字符串结构。StringBuilder sb new StringBuilder(Java学习); sb.insert(4, 零基础); // 在下标4的位置插入内容 System.out.println(sb); // 输出Java零基础学习3. delete() / deleteCharAt() 删除内容两个删除方法适配不同场景delete(start,end)删除[起始下标结束下标)区间的字符左闭右开deleteCharAt(index)删除指定单个下标字符StringBuilder sb new StringBuilder(123456); sb.delete(2,4); // 删除下标2、3的字符 System.out.println(sb); // 输出1256 s b.deleteCharAt(0); // 删除第一个字符 System.out.println(sb); // 输出2564. reverse() 字符串反转考试高频作用直接反转当前字符串内容无需额外遍历数组一行代码搞定字符串反转作业。StringBuilder sb new StringBuilder(abcdef); sb.reverse(); System.out.println(sb); // 输出fedcba5. length() 获取长度作用获取字符串实际字符个数区别于底层容量只统计有效字符。StringBuilder sb new StringBuilder(Java); System.out.println(sb.length()); // 输出46. toString() 转为String类型必备收尾方法StringBuilder是字符串容器最终如果需要赋值给String变量、打印输出、传参必须通过toString()转换为普通String对象这是新手最容易遗漏的步骤。StringBuilder sb new StringBuilder(大一Java学习); String str sb.toString(); // 转换为String类型 System.out.println(str);四、底层扩容规则空参创建的StringBuilder默认初始容量16当实际字符长度超过当前容量时自动扩容扩容公式新容量 原容量 × 2 2若扩容后的容量仍不够直接以实际字符长度作为新容量简单举例初始容量16第一次扩容后为34第二次为70以此类推。五、新手高频易错点避坑指南1. 不要用StringBuilder做等值判断StringBuilder没有重写equals()方法直接用equals或判断比较的是对象地址不是字符串内容。如需判断内容是否一致必须先toString()再比较。// 错误写法 new StringBuilder(abc).equals(new StringBuilder(abc)); // false // 正确写法 new StringBuilder(abc).toString().equals(new StringBuilder(abc).toString()); // true2. 循环拼接优先用StringBuilderfor、while循环中绝对不要用String 拼接循环次数越多效率越差3. 区分长度和容量length()实际字符数量容量底层缓冲区最大存储能力容量只会扩容不会缩小长度随内容变化。六、实战综合案例需求遍历1-100的数字拼接所有偶数最后反转字符串输出结果。public class StringBuilderDemo { public static void main(String[] args) { // 创建可变字符串容器 StringBuilder sb new StringBuilder(); // 循环拼接偶数 for (int i 1; i 100; i) { if (i % 2 0) { sb.append(i).append( ); } } // 反转字符串 sb.reverse(); // 转换为String输出最终结果 String result sb.toString(); System.out.println(偶数拼接反转结果 result); } }七、全文总结核心定位StringBuilder是可变字符串高效替代String频繁拼接操作核心特性单线程高效、无新对象产生、自动扩容五大核心方法append()、insert()、delete()、reverse()、length()、toString()扩容规则默认16扩容公式 原容量×22使用场景所有频繁修改、循环拼接字符串的场景