StringBuilder可看作是一个容器,其内容是可以改变的
作用:提高字符串的操作效率
例如:
String s1 = new String("aaa");
String s2 = new String("bbb");
String s3 = new String("ccc");
String s = s1 + s2 + s3;
以这种方式创建字符串s,在创建过程中由于有字符串的拼接,从左到右,s1与s2拼接过程中产生一个新的字符串,再与s3拼接再产生新字符串。在耗费时间的过程中也同样耗费着内存。而StringBuilder则是直接作用于字符串本身,并不会产生新的字符串,因此能够提高字符串的操作效率。
创建方法:
分为空参构造以及有参构造
1.无参创建
StringBuilder sb = new StringBuilder();
2.创建时添加初始字符串
StringBuilder sb2 = new StringBuilder("abc");
3.创建时添加初始长度
StringBuilder sb3 = new StringBuilder(10);
常用方法:
1. public StringBuilder append(任意数据) //添加数据,并返回对象本身
sb.append(1);
sb.append(2.0);
sb.append(true);
sb.append("abc");
System.out.println(sb);//结果为12.0trueabc
2. public StringBuilder reverse() //反转容器中的内容
sb.append(123);
sb.reverse();
System.out.println(sb);//结果为321
3.public int length() //返回长度(字符出现的个数)
sb.append(123);
sb.append("abc");
System.out.println(sb.length());//结果为6
4.public String toString() //通过toString可以实现把StringBuilder转化为String
sb.append(123);
sb.append("abc");
String str = sb.toString();
System.out.println(str);//结果为123abc
5.public StringBuilder insert(int index, 任意类型) //将数据插入容器中的指定位置
sb.append(123);
sb.insert(1,4);
System.out.println(sb);//结果为1423
6.public StringBuilder delete(int begin, int end); //删除指定范围内的数据(左闭右开)
sb.append(123456);
sb.delete(1,3);
System.out.println(sb);//结果为1456
7.public StringBuilder deleteCharAt(int index) // 删除指定位置的数据
sb.append(123);
sb.deleteCharAt(2);
System.out.println(sb);//结果为12
链式操作:
由于StringBuilder其中某些用法的返回类型仍为StringBuilder,(例如append,reverse等)
因此,可以进行循环调用,例如:
StringBuilder sb = new StringBuilder();
sb.append(123);
sb.append("abc");
sb.append(true);
int n = sb.length();
System.out.println(n);//结果为10
StringBuilder sb1 = new StringBuilder();
int n1 = sb1.append(123).append("abc").append(true).length();
System.out.println(n1);//结果仍为10
总结:
StringBuilder主要用于两种情况
1.需要多次进行字符串拼接
2.需要进行字符串反转