1. 程式人生 > 其它 >String ,StringBuffer,StringBuilder三者之間的異同

String ,StringBuffer,StringBuilder三者之間的異同

技術標籤:java字串

String :不可變的字元序列;底層使用char[]儲存
StringBuffer:可變的字元序列;執行緒安全,效率低,底層使用char[]儲存
StringBuilder:可變的字元序列;jdk5.0新增,執行緒不安全,效率高,底層使用char[]儲存

原始碼分析:

String str=new String();//char[]  value=new char[0];
String tsr1=new String("abc");//char [] value=new char[]{"a","b","c"};
StringBuffer sb1=new StringBuffer();//char []  value=new char[16];
System.out.println(sb1.length());
sb1.append("a");//value[0]="a";
sb1.append("b");//value[1]="b";
StringBuffer sb2=new StringBuffer("abc");//char[] value=new char[sb2.length()+16];
System.out.println(sb2.length());//3

擴容問題:
如果要新增的資料底層陣列盛不下,那就需要擴容底層的陣列
預設條件下,擴容為原來容量的2倍+2,同時將原來陣列中的元素複製到新的陣列中。