StringBuffer與StringBuilder的區別主要是前者是執行緒安全的,就是說它是同步的;後者不安全,不是同步的,其它的區別不大。當你的程式不需要執行緒同步,一般都用StringBuilder.StringBuilder(以下簡稱sb)與String(以下簡稱str)的區別是:舉個例子吧:Strings=newString(“woshizifuchuan”);當你要改變s的時候,比如改為s=s+”dsdsdsd”;系統會重新建立一個字串變數它的值為”woshizifuchuandsdsdsd”,然後把該字串賦值給s.當你這樣的改變s的行為在一個迴圈裡面,那麼將會建立大量的中間變數,影響程式的執行效率:如:for(inti=0;i<100000;i++){s=”a”;}StringBuildersb=newStringBuilder();一次性給sb分配一個固定長度大小的記憶體空間,當你改變的時候會在此空間後面加上,不夠的時候,記憶體空間自動增加.比如初始分配的記憶體大小為10位元組,那麼.Sb.append(“as”);它佔據記憶體空間10位元組,此時sb.toString().equals(“as”)為true;Sb.append.(“qqq”),它佔據的記憶體空間還是10位元組,sb.toString().equals(“asqqq”)為true.當記憶體空間不夠的時候,自動加長,加入一次增加10位元組,那麼:Sb.append(“ppppppp”),它佔據的記憶體空間為20位元組.StringBuilder允許設定它的初始長度和每次增加的長度。綜合來說:當你大量更一個字串的時候,String消耗的記憶體空間小,但是執行效率低。
StringBuffer與StringBuilder的區別主要是前者是執行緒安全的,就是說它是同步的;後者不安全,不是同步的,其它的區別不大。當你的程式不需要執行緒同步,一般都用StringBuilder.StringBuilder(以下簡稱sb)與String(以下簡稱str)的區別是:舉個例子吧:Strings=newString(“woshizifuchuan”);當你要改變s的時候,比如改為s=s+”dsdsdsd”;系統會重新建立一個字串變數它的值為”woshizifuchuandsdsdsd”,然後把該字串賦值給s.當你這樣的改變s的行為在一個迴圈裡面,那麼將會建立大量的中間變數,影響程式的執行效率:如:for(inti=0;i<100000;i++){s=”a”;}StringBuildersb=newStringBuilder();一次性給sb分配一個固定長度大小的記憶體空間,當你改變的時候會在此空間後面加上,不夠的時候,記憶體空間自動增加.比如初始分配的記憶體大小為10位元組,那麼.Sb.append(“as”);它佔據記憶體空間10位元組,此時sb.toString().equals(“as”)為true;Sb.append.(“qqq”),它佔據的記憶體空間還是10位元組,sb.toString().equals(“asqqq”)為true.當記憶體空間不夠的時候,自動加長,加入一次增加10位元組,那麼:Sb.append(“ppppppp”),它佔據的記憶體空間為20位元組.StringBuilder允許設定它的初始長度和每次增加的長度。綜合來說:當你大量更一個字串的時候,String消耗的記憶體空間小,但是執行效率低。