相同点:String、StringBuffer、StringBuilder都是用来代表字符串的,StringBuffer、StringBuilder在使用上基本相同。
不同点:String是不可变的,即每次修改都会创建新的对象。
StringBuffer是可变的,他每次修改不会创建新对象,是(synchronized)线程安全的,StringBuffer运行速度要比StringBuilder慢,支持并发,适用多线程。
StringBuilder是可变的,他每次修改不会创建新对象,但是是线程不安全的,StringBuilder运行速度要比StringBuffer快,不支持并发,适用单线程。
方法:由于StringBuffer、StringBuilder使用上基本相同方法也基本一样
创建StringBuffer s = new StringBuffer();对象
创建缓冲区:StringBuffer s1 = new StringBuffer(256);
在缓冲区中写入: StringBuffer s2 = new StringBuffer("Hello,word");
1.public StringBuffer append(String s);等参数
s2.append(",abc");//在s2对象后追加 “,abc”
输出结果为:Hello,word,abc
此方法多用于数据库的SQL语句的拼接
2.public StringBuffer insert(int offset, String str);等参数
s2.insert(5,",abc");//在下标为5的地方插入 “,abc” ;
输出结果为:Hello,abc,word
3.public StringBuffer reverse();
StringBuffer sb=new StringBuffer("ab");
sb.reverse();//此方法是将s2中的内容进行倒序反转;
输出结果为:ba
4.public void setCharAt(int index, char c);
StringBuffer sb=new StringBuffer("abcd");
sb.setCharAt(3,"C");//将sb中的下标为2的内容替换成 “C”;
输出结果为:abcC
5.public StringBuffer deleteCharAt(int index);
StringBuffer sb=new StringBuffer("abc");
sb.deleteCharAt(2);//删除指定下标的内容
输出结果为:ab
和 public StringBuffer delete(int start, int end);
StringBuffer sb=new StringBuffer("abcdef");
sb.delete(2, 4);//删除下标从2到4之间的内容,包含start(即包含下标2),不包含end(不包含下标4);
输出结果为:abef;
6.length();方法是获取字符串的长度;
7.setlength(int length);方法是设置字符串的长度大小,超出设置长度的字符将丢失;
8.capacity();方法是获取字符串的容量,结果为int 类型;ensureCapacity(); 方法重新设置字符串的容量;
9.getChars(int start, int end, Char ch[], int charStart); 方法是将截取后的字符串放入到数组中,
StringBuffer sb = new StringBuffer("abcdefg");
char[] c=new char[4];
sb.get(0,4,c,0);
输出结果数组c为:abcd
10.trimToSize(); 方法是整理空间,将StringBuffer对象的空间缩小到与字符串长度相同,以节省空间。
String、StringBuffer、StringBuilder的区别
原文:https://www.cnblogs.com/wangdiqu/p/12751477.html