ps.StringBuilder 和 StringBuffer用法一致StringBuffer适用于多线程但速度较慢StringBuilder反之。特殊StringBuilder数组// 第1步创建数组相当于买了一个有3个隔层的书包 StringBuilder[] rows new StringBuilder[3]; // 此时rows[0] null, rows[1] null, rows[2] null // 书包是空的每个隔层什么都没有 // 第2步往第0个隔层放一本新书创建StringBuilder对象 rows[0] new StringBuilder(); // 此时rows[0] 指向一个StringBuilder对象 // 第3步往第1个隔层放一本新书 rows[1] new StringBuilder(); // 此时rows[1] 指向另一个StringBuilder对象 // 第4步使用这些书 rows[0].append(Hello); // 在第0个隔层的书上写字 rows[1].append(World); // 在第1个隔层的书上写字① append(任意类型)用法 在末尾追加任意类型的数据int、char、String、boolean、double 等。返回自身支持链式调用。StringBuilder sb new StringBuilder(); sb.append(Hello); sb.append( ); sb.append(123); sb.append(true); // 链式调用 sb.append( World).append(!).append(456); System.out.println(sb); // Hello 123true World!456② insert(int offset, 任意类型)用法 在指定位置插入任意类型的数据。StringBuilder sb new StringBuilder(HelloWorld); sb.insert(5, ); // 在索引5插入空格 System.out.println(sb); // Hello World sb.insert(0, Say ); // 在开头插入 System.out.println(sb); // Say Hello World sb.insert(10, 123); // 插入数字 System.out.println(sb); // Say Hello123 World③ delete(int start, int end)用法 删除指定范围的字符 [start, end)包含 start不包含 end。StringBuilder sb new StringBuilder(Hello World); sb.delete(5, 6); // 删除索引5空格 System.out.println(sb); // HelloWorld sb.delete(0, 5); // 删除前5个字符 System.out.println(sb); // World④ deleteCharAt(int index)用法 删除指定索引位置的字符。StringBuilder sb new StringBuilder(Hello); sb.deleteCharAt(2); // 删除索引2l System.out.println(sb); // Helo sb.deleteCharAt(0); // 删除第一个字符 System.out.println(sb); // elo⑤ replace(int start, int end, String str)用法 将 [start, end) 范围的字符替换为指定字符串。StringBuilder sb new StringBuilder(Hello World); sb.replace(6, 11, Java); // 替换 World 为 Java System.out.println(sb); // Hello Java sb.replace(0, 5, Hi); // 替换 Hello 为 Hi System.out.println(sb); // Hi Java⑥ setCharAt(int index, char ch)用法 将指定索引位置的字符设置为新字符。StringBuilder sb new StringBuilder(Hello); sb.setCharAt(0, h); // 首字母改为小写 System.out.println(sb); // hello sb.setCharAt(4, !); // 最后改为感叹号 System.out.println(sb); // hell!⑦ charAt(int index)用法 返回指定索引位置的字符。StringBuilder sb new StringBuilder(Hello); char c1 sb.charAt(0); // H char c2 sb.charAt(4); // o System.out.println(c1 , c2); // H, o⑧ length()用法 返回字符串的长度字符数。StringBuilder sb new StringBuilder(Hello); int len sb.length(); // 5 System.out.println(len); // 5 sb.append( World); System.out.println(sb.length()); // 11⑨ capacity()用法 返回当前 StringBuilder 的容量可容纳字符数通常大于等于长度。StringBuilder sb new StringBuilder(); System.out.println(sb.capacity()); // 16默认容量 StringBuilder sb2 new StringBuilder(50); System.out.println(sb2.capacity()); // 50指定容量 sb2.append(Hello); System.out.println(sb2.capacity()); // 50⑩ ensureCapacity(int minimumCapacity)用法 确保容量至少为指定值预分配空间提高性能。StringBuilder sb new StringBuilder(); sb.ensureCapacity(100); // 预分配100容量 System.out.println(sb.capacity()); // 100或更大⑪ toString()用法 将 StringBuilder 转换为 String。StringBuilder sb new StringBuilder(Hello); String str sb.toString(); System.out.println(str); // Hello System.out.println(str.getClass()); // class java.lang.String⑫ substring(int start)用法 返回从 start 开始到末尾的子字符串返回 String。StringBuilder sb new StringBuilder(Hello World); String sub1 sb.substring(6); // World String sub2 sb.substring(0, 5); // Hello System.out.println(sub1); // World System.out.println(sub2); // Hello⑬ substring(int start, int end)用法 返回 [start, end) 范围的子字符串返回 String。StringBuilder sb new StringBuilder(Hello World); String sub sb.substring(0, 5); System.out.println(sub); // Hello⑭ reverse()用法 反转字符串。返回自身支持链式调用。StringBuilder sb new StringBuilder(Hello); sb.reverse(); System.out.println(sb); // olleH // 链式调用 String result new StringBuilder(Java) .reverse() .toString(); System.out.println(result); // avaJ⑮ indexOf(String str)用法 返回指定子字符串第一次出现的索引找不到返回 -1。StringBuilder sb new StringBuilder(Hello World Hello); int idx1 sb.indexOf(World); // 6 int idx2 sb.indexOf(Hello); // 0第一次出现 int idx3 sb.indexOf(Java); // -1找不到 System.out.println(idx1 , idx2 , idx3); // 6, 0, -1⑯ indexOf(String str, int fromIndex)用法 从指定位置开始查找子字符串第一次出现的索引。StringBuilder sb new StringBuilder(Hello World Hello); int idx sb.indexOf(Hello, 1); // 12从索引1开始找 System.out.println(idx); // 12⑰ lastIndexOf(String str)用法 返回子字符串最后一次出现的索引。StringBuilder sb new StringBuilder(Hello World Hello); int idx sb.lastIndexOf(Hello); // 12 System.out.println(idx); // 12⑱ lastIndexOf(String str, int fromIndex)用法 从指定位置向前查找子字符串最后一次出现的索引。StringBuilder sb new StringBuilder(Hello World Hello); int idx sb.lastIndexOf(Hello, 10); // 0从索引10往前找 System.out.println(idx); // 0⑲ setLength(int newLength)用法 设置字符串长度。如果缩短则截断如果增长则用空字符填充。StringBuilder sb new StringBuilder(Hello World); sb.setLength(5); // 截断为 Hello System.out.println(sb); // Hello sb.setLength(10); // 增长到10末尾填 null 字符 System.out.println(sb); // Hello\u0000\u0000\u0000\u0000\u0000 // 一般不这样用容易出问题⑳ trimToSize()用法 将容量减少到当前字符串长度节省内存。StringBuilder sb new StringBuilder(100); sb.append(Hello); System.out.println(sb.capacity()); // 100 sb.trimToSize(); System.out.println(sb.capacity()); // 5㉑ getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)用法 将指定范围的字符复制到字符数组中。StringBuilder sb new StringBuilder(Hello World); char[] arr new char[5]; sb.getChars(0, 5, arr, 0); System.out.println(arr); // Hello char[] arr2 new char[10]; sb.getChars(6, 11, arr2, 0); System.out.println(arr2); // World常用方法快速参考表方法作用示例append()追加内容sb.append(Hello)insert()插入内容sb.insert(0, Hi)delete()删除范围sb.delete(0, 5)deleteCharAt()删除单个字符sb.deleteCharAt(2)replace()替换范围sb.replace(0, 5, Hi)setCharAt()设置单个字符sb.setCharAt(0, h)charAt()获取单个字符char c sb.charAt(0)length()获取长度int len sb.length()toString()转为 StringString str sb.toString()substring()截取子串String sub sb.substring(0, 5)reverse()反转sb.reverse()indexOf()查找索引int idx sb.indexOf(Hello)lastIndexOf()从后查找int idx sb.lastIndexOf(Hello)setLength()设置长度sb.setLength(10)capacity()获取容量int cap sb.capacity()链式调用示例非常常用StringBuilder sb new StringBuilder(); sb.append(Hello) .append( ) .append(World) .insert(5, ,) .reverse(); System.out.println(sb); // dlroW ,olleH