区别和共同点
不同点:
stringbuffer和stringbuilder都不同于string,string当修改字符串时,是在内存中创建一个新的字符串,并把地址传给string 对象,因此比较浪费空间,而stringbuffer和stringbuilder是在初始时创建一个容器,当修改的时候会修改容器中的内容,而不是创建一个新的容器,所以如果有一个需要频繁改变的字符串的话,最好不要使用string。
string buffer和stringbuilder的方法基本上相同
区别:
stringbuffer线程安全的使用synchronization修饰的方法
stringbuilder线程不安全的,在单线程下推荐使用stringbuilder,因为他没有加线程锁
stringbuilder
在stringbuilder中他的方法并没有加线程锁,所以他的效率高一点,但是如果在多线程的情况下,不推荐使用。
StringBuilder ss=new StringBuilder();
//添加内容到容器尾部
ss.append("aaaaa");
//删除第一个到第二个的元素
ss.delete(1,2);
//插入元素到指定位置
ss.insert(2,"bbb");
//删除指定位置的元素
ss.deleteCharAt(2);
//替换指定位置的元素
ss.replace(1,3,"ccc");
//反转内容
ss.reverse();
//截取内容,返回一个charsequence对象
CharSequence x = ss.subSequence(2, 4);
System.out.println(x);
//截取内容返回一个字符串
System.out.println(ss.substring(1));
ss.append("weweraereasearaerwarsa");
//获取stringbuffer的容器大小
System.out.println(ss.capacity());
//获取string buffer的长度
System.out.println(ss.length());
//将stringbuffer转成string对象
String ss1 = ss.toString();
System.out.println(ss);
stringbuffer
StringBuffer stringBuffer = new StringBuffer("11qwqwq");
//stingbuffer和stringbuilder的方法基本一致