StringBuffer和StringBuilder
String、StringBuffer和StringBuilder的区别
- String:不可变的字符序列,效率最低
- StringBuffer:可变的字符序列,线程安全的,效率低,建议使用
- StringBuilder:可变的字符序列,线程不安全的,效率高
源码分析
String str=new String()// char[] value=new char[0]
String str=new String("abc")// char[] value=new char{'a','b','c'}
StringBuffer sb=new StringBuffer();//char[] value=new char[16];
sb,append("a");//value[0]='a';
StringBuffer sb=new StringBuffer("abc");//char[] value=new char["abc".length()+16]
//扩容方式:扩容为原来的2倍加2,如果太长了,就把字符长度当作扩容的长度。
StringBuffer、StringBuilder类常用方法
- append()
- delete(startIndex,endInedx)
- replace(start,end,String)
- insert(offset,String)
- reverse()
- int indexOf(String)
- String subString(start,end)
- int length()
- char charAt()
- void setCharAt(int n,char c)
本文对比分析了不可变的String与可变的StringBuffer和StringBuilder,阐述了它们的效率差异、源码实现和常用方法,重点讲解了何时选择哪种类型。
2071

被折叠的 条评论
为什么被折叠?



