base黑马程序员
目录
一、StringBuilder的作用场景
1、字符串的拼接
2、字符串的反转
StringBuilder的作用是可以提高字符串的操作效率。
例如在传统拼接字符串的操作上。
String s1 = "aaa";
String s2 = "bbb";
String s3 = "ccc";
String s4 = "ddd";
String s5 = "eee";
String s6 = s1 + s2 + s3 + s4 + s5;
像以上这样拼接的话,s1+s2 会产生一个新的字符串,新的字符串再和s3拼接,就又产生一个新的字符串。如此反复下去,非常影响效率。
下面是使用传统字符串拼接方法的具体代码:
public class StringBuilderTest1 {
public static void main(String[] args) {
String s= "";
for (int i = 0; i < 1000000; i++) {
s = s +"夏天的冬雪";
}
System.out.println(s);
}
}
而StringBuilder可以看成是一个容器,里面的的内容是可以发生改变的。
在整个字符串的拼接过程中只有一个StringBuilder的对象,不会产生没有用的字符串,所以StringBuilder在拼接字符串上的效率会更高。
下面是使用SpringBuilder方式拼接字符串的具体代码:
public class StringBuilderTest2 {
public static void main(String[] args) {
StringBuilder sb= new StringBuilder("");
for (int i = 0; i < 1000000; i++) {
sb.append("夏天的冬雪");
}
System.out.println(sb);
}
}
二、StringBuilder构造方法
public StringBuilder() //创建的是空白可变字符串对象,不包含任何内容
public StringBuilder(String str) //根据字符串的内容,来创建可变字符串对象
如果使用无参构造方法进行创建,StringBuilder容器中任何值都没有。
使用有参构造方法创建,SpringBuilder容器中就会有一个初始值“abc”。
三、StringBuilder常用方法
public StringBuilder append(任意类型) //添加数据,并且返回对象本身。
public StringBuilder reverse() //反转容器中的内容。
public int length() //返回长度(字符出现的个数)。
public String toString() //通过 toString()方法把StringBuilder转换为String类型。
四、链式编程
当调用一个方法时,不需要使用变量来接收它的结果,而是可以继续调用其他方法。例如下面的代码:
public class ChainedTest{
public static void main(String[] args){
int len = getString().substring(1).replace("d","D").length();
}
public static String getString(){
return "chained test demo......";
}
}
这是因为getString()方法的返回值是String类型的,而String类型是可以直接调用substring()方法,substring()方法的返回值也是String类型的,String类型也是可以直接调用replace()方法。
换句话说,方法返回的值,不用变量去接收了,而是直接拿着方法返回的值,去调用这种返回值类型所能调用的方法。
五、StringBuilder综合实例
public class StringBuilderTest3 {
public static void main(String[] args) {
//创建StringBuilder对象
StringBuilder sb = new StringBuilder("abc");
//添加元素
//StringBuilder类型的变量可以调用append()方法,
//而append()方法的返回值也是StringBuilder类型,
//所以也可以再次去调用append()方法。这里就用到了链式编程。
sb.append(1).append("abc").append(2.5);
System.out.println("添加元素后的结果:"+sb);
//反转添加的元素
sb.reverse();
System.out.println("元素反转后的结果:"+sb);
//获取长度
int len = sb.length();
System.out.println("获取元素的长度:"+len);
//转换成字符串进行打印
String string = sb.toString();
System.out.println("转换成字符串后的结果:"+string);
}
}
实现效果: