24.面向对象进阶:常用API——StringBuilder
2022-01-31 本文已影响0人
每天起床都想摆
StringBuilder
StringBuilder概述
- StringBuilder是一个可变的字符串类(String是不可变字符串类),我们可以把它看成一个对象容器
- 作用:提高字符串的操作效率(节约内存,创建更少的对象),如拼接,修改等
StringBuilder构造器
名称(有参构造器&无参构造器) | 说明 |
---|---|
public StringBuilder() | 创建一个空白的可变的字符串对象,不包含任何内容 |
public StringBuilder(String str) | 创建一个指定字符串内容的可变字符串对象 |
StringBuilder常用方法
方法名称 | 说明 |
---|---|
public StringBuilder append(任意类型) | 添加数据并返回StringBuilder对象本身 |
public StringBuilder reverse() | 将对象的内容反转 |
public int length() | 返回对象内容长度 |
public String toString() | 通过toString()就可以实现把StringBuilder转换为String |
-
StringBuilder支持链式编程,解读源码可知,append每次获得拼接便返回其本身
package com.java.apitest; public class StringBuilderDemo { public static void main(String[] args) { StringBuilder sb = new StringBuilder(); sb.append("a"); sb.append("BC"); sb.append(1); sb.append(0.1); sb.append("false"); System.out.println(sb); // StringBuilder支持链式编程 /* StringBuilder中append方法的源码: @Override @IntrinsicCandidate public synchronized StringBuffer append(String str) { toStringCache = null; super.append(str); return this; } */ StringBuffer sb1 = new StringBuffer(); System.out.println(sb1.append("a").append("bc").append(3.14)); } }
-
StringBuilder只是拼接字符串的手段,效率好,最终还是要恢复成String
因此需要使用String类型的变量接收StringBuilder的数据,但是类型不兼容,因此需要调用toString()方法
String result = sb.toString();
-
反转&长度
// 反转 StringBuilder sb2 = new StringBuilder(); System.out.println(sb2.append("首《上海自来水来自上海》尾").reverse()); // 长度 System.out.println(sb2.length());
String拼接内存原理图

StringBuilder拼接内存原理图

案例需求
-
打印整型数组内容
-
需求:设计一个方法用于输出任意整型数组的内容,要求输出如下格式:
"该数组内容为:[11,22,33,44,55]"
-
测试代码
package com.java.apitest; /** * 实现真正的优雅的字符串拼接 */ public class Test01 { public static void main(String[] args) { int[] arr = {1, 2, 3, 4, 5, 6}; System.out.print("该数组内容为:"); System.out.println(ArrayAppend(arr)); } /** * 拼接打印字符串内容 * * @param array * @return */ public static String ArrayAppend(int[] array) { if (array != null) { StringBuilder sb = new StringBuilder("["); for (int i = 0; i < array.length; i++) { sb.append(array[i]).append(i == array.length - 1 ? "" : ","); // 中文逗号 } sb.append("]"); return sb.toString(); } return null; } }
-