微網(wǎng)站建設(shè)高端網(wǎng)站定制杭州網(wǎng)站seo
相同點:
String 和 StringBuffer,它們可以儲存和操作字符串, 即包含多個字符的字符數(shù)據(jù)。
String 和 StringBuffer 的區(qū)別有以下幾點:
1.String 類提供了數(shù)值不可改變的字符串。而 StringBuffer 類提供的字符串進行修改。當你知道字符數(shù)據(jù)要改變的時候你就可以 使用 StringBuffer 。典型地,你可以使用 StringBuffers 來動態(tài)構(gòu)造字符數(shù)據(jù)。
2.String 實現(xiàn)了 equals 方法, new String(“abc”).equals(new String(“abc”) 的結(jié)果為 true,StringBuffer 沒有實現(xiàn) equals 方法, new StringBuffer(“abc”).equals(new StringBuffer(“abc”)的結(jié)果為 false 。
3.我們要把 1 到 10000? 的所有數(shù)字拼起來,組成 一個串。import java.util.Date; public class Test01 {public static void main(String[] args) {//StringBuffer 把 1 到 10000 的所有數(shù)字拼起來,組成一個字符串StringBuffer stringBuffer = new StringBuffer();long start = new Date().getTime();for(int i=0;i<10000;i++){stringBuffer.append(i);}long end = new Date().getTime();System.out.println(end-start);//String 把 1 到 10000 的所有數(shù)字拼起來,組成一個字符串String string = new String();long start1 = new Date().getTime();for(int i=0;i<10000;i++){string = string + i;}long end1 = new Date().getTime();System.out.println(end1-start1);} }
上面的代碼效率很高,因為只創(chuàng)建了一個 StringBuffer 對象,而下面的代碼效率很低,因為創(chuàng)建了 10001 個對象。
4. StringBuilder 與 StringBuffer相比,后者是線程安全的,前者是線程不安全,所以在使用時,對少量數(shù)據(jù)進行操作時選擇String,對大量數(shù)據(jù)進行操作時,多線程使用StringBuffer,單線程使用StringBuilder。
5.Sring 覆蓋了 equals 方法和 hashCode 方法,而 StringBuffer 沒有覆蓋 equals 方法和 hashCode 方法,所以,將 StringBuffer 對象存儲進 Java 集合類中時會出 現(xiàn)問題。