字符串生成器
创建成功的字符串对象,其长度是固定的,内容不能被改变和编译。
虽然使用“+”可以达到附加新的字符或者字符串的效果,但是会创建一个新的字符串,多占用系统内存。
Sting-Builder
可以大大提高频繁增加字符串的效率
String s = ""; //创建空字符串
long starTime = System.currentTimeMillis();
for(int i=0;i<10000;i++) {
s=s+i;
}
long endTime = System.currentTimeMillis();
long time = endTime - starTime;
System.out.println("String消耗时间:"+time);
//创建字符串生成器
StringBuilder builder = new StringBuilder("");
starTime = System.currentTimeMillis();
for(int j=0;j<10000;j++) {
builder.append(j);
}
endTime = System.currentTimeMillis();
time = endTime - starTime;
System.out.println("StringBuilder 消耗时间:"+time);
输出结果:
String消耗时间:89
StringBuilder 消耗时间:1
(1)append(content)
向字符串后追加内容
content可以接受任何类型的数据
int、boolean、char、String、double、另一个字符串生成器
StringBuilder s = new StringBuilder("I am good.");
//Boolean
boolean b = true;
s.append(b);
System.out.println(s.toString());
//int double等
int i = 123;
s.append(i);
System.out.println(s.toString());
//char
char c = 'w';
s.append(c);
System.out.println(s.toString());
//String
String s1 = new String(" Yes you are right! ");
s.append(s1);
System.out.println(s.toString());;
//另一个字符生成器
s.append(s);
System.out.println(s.toString());;
输出结果:
I am good.true
I am good.true123
I am good.true123w
I am good.true123w Yes you are right!
I am good.true123w Yes you are right! I am good.true123w Yes you are right!
(2)insert(int offset, content)
向字符串生成器中的指定位置插入数据内容
offset 插入位置 从这个位置开始插入
content类型与上面相同
StringBuilder s = new StringBuilder("I am good.");
s.insert(5, "really ");
System.out.println(s.toString());
(3)delete(int start, int end)
删除从start到end-1的字符
如果end-1处的字符不存在,则删除到字符串结尾
StringBuilder s = new StringBuilder("I am good.");
s.delete(2,4);
System.out.println(s.toString());
输出结果:
I good.