一、StringBuffer
带缓冲区的字符串,字符串是可以改变的;
即使值改变,也始终只创建了一个对象;
char [] value,默认16,装满16个元素,数组扩容,仅改变地址,不需重新创建变量;
public static void main(String[] args) {
/*
StringBuffer
带缓冲区的字符串,字符串是可以改变的;即使值改变,也始终只创建了一个对象、
char [] value; 默认16,装满16个元素,数组扩容,仅改变地址,不需重新创建变量;
*/
StringBuffer d=new StringBuffer();
d.append("abc");//向末尾添加
d.insert(2,"ljk");//指定位置添加
d.deleteCharAt(1);//删除输入位置的字符;
d.delete(2,4);//删除输入范围内的字符串;
d.replace(1,3,"kjhhd");//替换输入范围内的字符串;
/*
d.subString();截取功能,截取出的字符串赋予给新的变量,原来的不变;
可截取指定区间的字符串,也可输入一个开始位置截取其之后的字符串;
*/
System.out.println(d);
}
二、StringBuilder
方法与StringBuilder一致;
三、StringBuffer与StringBuilder的区别:
1.StringBuffer与StrnigBuilder都是字符串缓冲区;
2.区别:
StringBuffer中的方法都有synchronized修饰,一次只允许一个请求进入操作,多用户访问时,是安全的;
StringBuilder无修饰,所以在多用户同时访问时,不安全;
四、String,StringBuffer,StringBuilder
String:一旦创建,则值不可改变,改变会创建新的变量;
StringBuffer:值可改变,不会创建新的变量,变的只有底层的数组,支持多线程且安全; StringBuilder:值可改变,不会创建新的变量,不支持多线程,多人同时使用时不安全;