一、介绍
StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。
二、知识点介绍
1、StringBuilder概述
2、StringBuilder和String的区别
3、构造方法
4、方法
5、练习
三、上课对应视频的说明文档
1、StringBuilder概述
我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间。而StringBuilder就可以解决这个问题。

2、StringBuilder和String的区别?
String的内容是固定的。
StringBuilder的内容是可变的。
3、构造方法
public StringBuilder()
和构造方法相关的方法
public int capacity():返回当前容量,理论值
public int length():返回长度(字符数),实际值
public class Demo01StringBuilder {
public static void main(String[] args) {
//创建对象
StringBuilder builder = new StringBuilder();
System.out.println("builder:"+builder);
System.out.println("builder.capacity():"+builder.capacity());
System.out.println("builder.length():"+builder.length());
}
}
4、方法
添加功能
public StringBuilder append(任意类型):添加数据,并返回自身对象
反转功能
public StringBuilder reverse()
public class Demo02StringBuilder {
public static void main(String[] args) {
//创建对象
StringBuilder builder = new StringBuilder();
//public StringBuilder append(任意类型)
//StringBuilder builder2 = builder.append("hello");
/*
System.out.println("builder:"+builder);
System.out.println("builder2:"+builder2);
System.out.println(builder == builder2); //true
*/
/*
builder.append("hello");
builder.append("world");
builder.append(true);
builder.append(100);
*/
//链式编程
builder.append("hello").append("world").append(true).append(100);
System.out.println("builder:"+builder);
//public StringBuilder reverse()
builder.reverse();
System.out.println("builder:"+builder);
}
}
与String的相互转换
StringBuilder -- String
public String toString():通过toString()就可以实现把StringBuilder转成String
String -- StringBuilder
StringBuilder(String str):通过构造方法就可以实现把String转成StringBuilder
public class Demo03StringBuilderTest {
public static void main(String[] args) {
//StringBuilder -- String
/*
StringBuilder builder = new StringBuilder();
builder.append("hello").append("world");
String s = builder.toString();
System.out.println(s);
*/
//String -- StringBuilder
String s = "helloworld";
StringBuilder builder = new StringBuilder(s);
System.out.println(builder);
}
}
5、练习
数组元素格式拼接
举例:int[] arr = {1,2,3};结果:[1, 2, 3]
public class Demo04StringBuilderTest {
public static void main(String[] args) {
//定义一个数组
int[] arr = {1,2,3};
//调用方法
String s = arrayToString(arr);
//输出结果
System.out.println("s:"+s);
}
/*
* 写方法实现拼接
* 两个明确:
* 返回值类型:String
* 参数列表:int[] arr
*/
public static String arrayToString(int[] arr) {
StringBuilder builder = new StringBuilder();
builder.append("[");
for(int x=0; x<arr.length; x++) {
if(x==arr.length-1) {
builder.append(arr[x]).append("]");;
}else {
builder.append(arr[x]).append(", ");
}
}
String result = builder.toString();
return result;
}
}
字符串反转
public class Demo05StringBuilderTest {
public static void main(String[] args) {
//1:键盘录入一个字符串
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String s = sc.nextLine();
//3:调用方法
String result = myReverse(s);
//4:输出结果
System.out.println("result:"+result);
}
/*
* 2:写方法实现反转
* 两个明确:
* 返回值类型:String
* 参数列表:String
*/
public static String myReverse(String s) {
//String -- StringBuilder -- reverse() -- String
StringBuilder builder = new StringBuilder(s);
builder.reverse();
String result = builder.toString();
return result;
}
}