StringBuffer 与 Stringbuilder在功能上一模一样,只不过两种类在线程安全的问题上有所不同,StringBuffer对多线程是安全的,因为内部就使用了监视器,StringBuilder因为内部没有设置监视器,所以效率比StringBuffer高,在多线程中,如果能保证线程安全的话,使用StringBuilder是更好的选择。
StringBuffer 最常用的方法:- package exercise;
- public class TestStringBuffer {
- public static void main(String[] args) {
- StringBuffer sb = new StringBuffer();
-
- //添加:
- sb.append(true);//添加布尔类型 返回StringBuffer
- sb.append('a');//添加字符 返回StringBuffer
- sb.append(new char[]{'a', 'b'});//添加字符数组 返回StringBuffer
- sb.append("abc");//添加字符串 返回StringBuffer
- sb.append(1);//添加整形 返回StringBuffer
- sb.append(new Object());//添加类 返回StringBuffer
- sb.append(new StringBuffer());//添加StringBuffer对象 返回StringBuffer
-
- //查找
- sb.indexOf("abc");//查找字符串"abc",并返回第一次出现的角标位置 返回int
- sb.indexOf("abc", 1);//从1角标开始查找,返回第一次出现的位置 返回int
- sb.lastIndexOf("ab");//找最后一次出现字符串的位置 返回int
- sb.lastIndexOf("ab", 1);//从角标1开始找最后一次出现字符串的位置 返回int
-
- //插入
- sb.insert(1, true);//和append一样,差别在于append是从最后一个位置开始增加,
- //而insert是从指定位置开始增加 返回StringBuffer
-
- //替代
- sb.replace(1, 3, "22");//将角标1到角标3(不包括3)的位置间的字符串替换成“22”
- //返回StringBuffer
-
- //其他
- sb.reverse();//倒序 返回StringBuffer
- sb.substring(2);//从角标2开始截取字符串 返回String
- sb.substring(2, 4);//截取2到4角标(不包括4)之间的字符串 返回String
- sb.toString();//转换成String 返回String
- }
- }
复制代码 |