StringBuffer与StringBuilder的区别
- StringBuffer支持并发操作,适合多线程使用。
- StringBuilder不支持并发操作,不适合多线程使用。
- StringBuilder不是线程安全的(不能同步访问),但其在单线程中的性能优于StringBuffer,因此若针对单线程运行的程序或者是不需要考虑线程同步问题的程序,优先考虑StringBuilder,若需要保证线程安全,则使用StringBuffer。
StringBuffer的常用方法
方法 | 方法描述 |
---|---|
append(…) | 将指定字符(串)追加到序列中 |
insert(int offset,…) | 将指定字符(串)插入到序列中 |
capacity() | 返回当前容量 |
length() | 返回序列长度(字符数) |
charAt(inr index) | 返回指定索引处的char值 |
delete(int start,int end) | 删除索引在[a,b)范围内的所有字符 |
deleteCharAt(int index) | 删除指定索引处的字符 |
indexOf(String str) | 返回指定子字符串第一次出现的索引 |
indexOf(String str,int fromIndex) | 从指定索引处开始,返回指定子字符串第一次出现的索引 |
lastIndexOf(String str) | 返回指定子字符串最后一次出现的索引 |
lastIndexOf(String str,int fromIndex) | 从指定索引处开始向后搜索,返回指定子字符串最后一次出现的索引 |
replace(int start,int end,String str) | 使用指定的字符串替换序列中指定范围内的字符 |
reverse() | 反转序列 |
StringBuffer stringBuffer = new StringBuffer();//构建一个字符串缓冲区,其中没有字符,初始容量为16个字符
stringBuffer.append("abc");//stringBuffer:abc
stringBuffer.insert(2,"11");//stringBuffer:ab11c
int capacity=stringBuffer.capacity();//capacity:16
int length=stringBuffer.length();//length:5
char ch=stringBuffer.charAt(0);//ch:a
stringBuffer.deleteCharAt(0);//stringBuffer:b11c
stringBuffer.delete(0,1);//stringBuffer:11c
int firstIndex=stringBuffer.indexOf("1");//firstIndex:0
int lastIndex=stringBuffer.lastIndexOf("1");//lastIndex:1
stringBuffer.replace(0,2,"ah");//stringBuffer:ahc
stringBuffer.reverse();//stringBuffer:cha
StringBuilder的常用方法
StringBuilder类提供与StringBuffer兼容的API。