1. StringBuilder概述
StringBuilder代表可变字符串对象,相当于一个容器,它里面装的字符串是可以改变的,就是用来操作字符串的。
好处:StringBuilder比String更适合做字符串的修改操作,效率会更高,代码也会更简洁。
2. 常用API
构造器 | 说明 |
---|
StringBuilder() | 创建一个空白的可变字符串对象,不包含任何内容 |
StringBuilder(String str) | 创建一个指定字符串内容的可变字符串对象 |
方法名称 | 说明 |
---|
append(任意类型) | 添加数据并返回StringBuilder对象本身【支持链式编程】 |
reverse | 将对象的内容反转 |
length | 返回对象内容长度 |
toString() | 将StringBuilder转化为String |
public class Test {
public static void main(String[] args) {
StringBuilder stringBuilder = new StringBuilder("zhangsan");
stringBuilder.append(12);
stringBuilder.append(true);
stringBuilder.append(666).append("789");
System.out.println(stringBuilder);
stringBuilder.reverse();
System.out.println(stringBuilder);
System.out.println(stringBuilder.length());
String s = stringBuilder.toString();
System.out.println(s);
}
}
3. 为啥操作字符串建议使用StringBuilder,而不是String?
- 对于字符串相关的操作,比如频繁的拼接、修改等,建议使用StringBuilder,效率更高。
- 注意:如果操作字符串较少,或者不需要操作, 以及定义字符串变量,还是建议使用String。
4. StringBuffer与StringBuilder的区别
- StringBuffer的用法与StringBuilder的用法是一样的。
- 但是StringBuilder是线程不安全的,StringBuilder是线程安全的。
5. 案例-返回任意整形数组的内容
5.1 需求分析
设计一个方法,用于返回任意整形数组的内容,要求返回的数据内容格式如:[11, 22, 33]。
分析:
- 方法是否需要接收参数?需要接收整形数组
- 方法是否需要返回数据?需要返回拼接后的数据
- 方法内部:遍历数组的数据,把遍历到的数据都拼接起来,此时使用StringBuilder来完成拼接
5.2 代码实现
public class Test2 {
public static void main(String[] args) {
String data = getArrayData(new int[]{11, 22, 33});
System.out.println(data);
}
public static String getArrayData(int[] arr) {
if (Objects.isNull(arr)) {
System.out.println("数组为Null");
return null;
}
StringBuilder builder = new StringBuilder();
builder.append("[");
for (int i = 0; i < arr.length; i++) {
if (i == arr.length - 1) {
builder.append(arr[i]);
break;
}
builder.append(arr[i] + ",");
}
builder.append("]");
return builder.toString();
}
}
6. StringJoiner
JDK8开始才有的,跟StringBuilder一样,也是用来操作字符串的,也可以看成是一个容器,创建之后里面的内容是可变的。
好处:不仅能提高字符串的操作效率,并且在有些场景下使用它来操作字符串,代码会更简洁。
构造器 | 说明 |
---|
StringJoiner(间隔符号) | 创建一个StringJoiner对象,并指定拼接式的间隔符号 |
StringJoiner(间隔符号, 开始符号, 结束符号) | 创建一个StringJoiner对象,并指定拼接式的间隔符号、开始符号、结束符号 |
方法名称 | 说明 |
---|
add(增加内容-字符串类型) | 增加数据,并返回对象本身 |
length | 返回长度(字符出现的个数) |
toString() | 返回一个字符串(该字符串就是拼接之后的结果) |
public class Test {
public static void main(String[] args) {
StringJoiner joiner = new StringJoiner(",");
joiner.add("java1").add("java2").add("java3");
System.out.println(joiner);
StringJoiner joiner1 = new StringJoiner(",", "[", "]");
int[] arr = {11,22,33};
for (int i = 0; i < arr.length; i++) {
joiner1.add(arr[i] + "");
}
System.out.println(joiner1);
StringJoiner joiner2 = new StringJoiner(",");
joiner2.add(123 + "");
System.out.println(joiner2.length());
}
}