string和stringbuffer和stringbuilder的區別如下:
1、線程安全:StringBuffer:線程安全,StringBuilder:線程不安全。因為StringBuffer的所有公開方法都是synchronized修飾的,StringBuilder並沒有StringBuilder修飾。
2、緩沖區:StringBuffer每次獲取toString都會直接使用緩存區的toStringCache值來構造壹個字符串。而StringBuilder則每次都需要復制壹次字符數組,再構造壹個字符串。所以,緩存沖這也是對StringBuffer的壹個優化吧,不過StringBuffer的這個toString方法仍然是同步的。
3、性能:StringBuffer是線程安全的,它所有公開方法都是同步的,StringBuilder是沒有對方法加鎖同步的,所以毫無疑問,StringBuilder的性能要遠大於StringBuffer。
字符修改上的區別:
①String。
String?s = null。
String?s =“abc”。
②StringBuffer。
StringBuffer s = null; //結果警告:Null pointer access: The variable result can only be null at this location。
StringBuffer s = new StringBuffer();//StringBuffer對象是壹個空的對象。
StringBuffer s = new StringBuffer(“abc”);//創建帶有內容的StringBuffer對象,對象的內容就是字符串”。