StringBuilder学习
StringBuilder的API介绍
使用StringBuilder的是因为StringBuilder比String的性能更好, 使用更加方便
StringBuilder概述
StringBuilder是一个可变的字符串类,我们可以把它看成是一个对象容器。
作用:提高字符串的操作效率,如拼接、修改等。
StringBuilder的有参和无参构造器
名称 说明
public StringBuilder() 创建一个空白的可变的字符串对象,不包含任何内容
public StringBuilder(String str) 创建一个指定字符串内容的可变字符串对象
StringBuilder的常用方法
方法名称 说明
append(任意类型) 添加数据并返回StringBuilder对象本身
reverse() 将对象的内容反转
length() 返回对象内容长度
toString() 通过toString()就可以实现把StringBuilder转换为String
append方法的使用
append方法基本使用
public class StringBuilderDemo1 {
public static void main(String[] args) {
StringBuilder strb1 = new StringBuilder();
strb1.append("a");
strb1.append("b");
strb1.append("c");
strb1.append("我爱你中国");
strb1.append(false);
System.out.println(strb1); // abc我爱你中国false
}
}
append方法的链式调用
public class StringBuilderDemo1 {
public static void main(String[] args) {
StringBuilder strb1 = new StringBuilder();
strb1.append("a").append("b").append(1.23).append("我爱你中国").append(false);
System.out.println(strb1); // ab1.23我爱你中国false
}
}
注意: 在上面代码中, 打印strb1时, 我们发现打印的是字符串, 并不是字符串的地址, 说明StringBuilder内部是重写了toString方法的
源码
@Override
@IntrinsicCandidate
public String toString() {
// Create a copy, don't share the array
return isLatin1() ? StringLatin1.newString(value, 0, count)
: StringUTF16.newString(value, 0, count);
}
reverse方法演示
public class StringBuilderDemo1 {
public static void main(String[] args) {
StringBuilder strb1 = new StringBuilder();
strb1.append("a").append("b").append("c").reverse();
System.out.println(strb1); // cba
}
}
length方法演示
public class StringBuilderDemo1 {
public static void main(String[] args) {
StringBuilder strb1 = new StringBuilder();
strb1.append("a").append("b").append("c");
System.out.println(strb1.length()); // 3
}
}
toString方法使用
StringBuilder只是拼接字符串的手段, 最终的结果还是要恢复成String类型, 我们就可以调用toString方法恢复成String类型
public class StringBuilderDemo1 {
public static void main(String[] args) {
StringBuilder strb1 = new StringBuilder();
strb1.append("a").append("b").append("c");
// 调用toString方法恢复成String类型
strb1.toString();
System.out.println(strb1); // abc
}
}
小结:
为什么拼接、反转字符串建议使用StringBuilder?
String的内容是不可变的、拼接字符串性能差。
StringBuilde的内容是可变的、拼接字符串性能好、代码优雅。
StringBuilder和StringBuilder如何选择?
定义字符串使用String
拼接、修改等操作字符串使用StringBuilder
StringBuilder的API练习
需求:
设计一个方法用于输出一个任意整型数组的字符串,要求输出成如下格式:
“该数组内容为:[11, 22, 33, 44, 55]”
分析:
1、定义一个方法,要求该方法能够接收数组,并输出数组内容。 —> 需要参数吗?需要返回值类型申明吗?
2、定义一个静态初始化的数组,调用该方法,并传入该数组。
代码展示
public class StringBuilderDemo2 {
public static void main(String[] args) {
int[] arr1 = null;
System.out.println(getString(arr1));
int[] arr2 = {101, 119, 120, 143};
System.out.println(getString(arr2));
}
public static String getString(int[] arr) {
if (arr == null) return null;
StringBuilder strb = new StringBuilder("[");
for (int i = 0; i < arr.length; i++) {
strb.append(arr[i]).append(i == arr.length - 1 ? "": ", ");
}
strb.append("]");
return "该数组内容为: " + strb.toString();
}
}
- 点赞
- 收藏
- 关注作者
评论(0)