当我们定义一个字符串的时候,如:String str=“123”;对于str这个对象 只适合重用,不适合修改,举个例子:
String str="a";
for(int i=0;i<=10000000;i++){
str+="a";
}
System.out.println(str);
这种情况下,会一直创建一个新的String类型的对象,占用计算机的内存
所以,就有了修改字符串的API java.lang.StringBuilder,其内部维护一个可变的char数组(这个数组并没有被final修饰),而StringBuilder方法就是在char数组的基础上进行修改的,内存开销小,性能好。
StringBuilder方法:
StringBuilder builder=new StringBuilder(); 该方法的无参构造
StringBuilder builder=new StringBuilder(str);该方法的有参构造,表示String类型的参数内容可以使用StringBuilder方法进行修改了:主要有四个方面的修改:
1.拼接/增(append(String))
String str="努力学习java";
StringBuilder builder=new StringBuilder(str);//表示定义的str可以被修改
builder.append(",为了找到好工作")
str=builder.toString();//将拼接后的赋值给str
System.out.println(str);//输出结果为"努力学习java,为了找到好工作"
2.替换/改(replace(start,end,String))
String str="努力学习java,为了找到好工作";
StringBuilder builder=new StringBuilder(str);//表示定义的str可以被修改
builder.replace(9,16,"为了改变世界");
System.out.println(builder);//输出结果为"努力学习java,为了改变世界"
3.删除操作(delete(start,end))
String str="努力学习java,为了改变世界";
StringBuilder builder=new StringBuilder(str);//表示定义的str可以被修改
builder.delete(0,8);
System.out.println(builder);//输出结果为",为了改变世界"
4.插入操作(insert(start,String))
String str="为了改变世界";
StringBuilder builder=new StringBuilder(str);//表示定义的str可以被修改
builder.insert(0,"活着,");
System.out.println(builder);//输出结果为"活着,为了改变世界"
StringBuffer和StringBuilder是可以产生相同的效果,
Buffer线程更加安全,但是性能不如Builder