String ,StringBuffer,StringBuilder三者之間的異同
阿新 • • 發佈:2021-02-09
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,同時將原來陣列中的元素複製到新的陣列中。