熱度 1||
1.StringBuffer vs StringBuilder
StringBuilder 發表於JDK 1.5,那到底StringBuilder和StringBuffer有什麼不同呢?根據javadoc,StringBuilder是設計來取代StringBuffer在single-threaded上的使用的,以下簡單列出幾項兩者間的主要差異:
⓪StringBuffer是設計為thread-safe的而且它的所有public methods幾乎都是寫成synchronized.而StringBuilder則正好相反
⓪StringBuilder在絕大多數的情況下比StringBuffer擁有更好的效能
⓪建議盡可能的使用StringBuilder取代StringBuffer
除了這些之外,在比較過兩者的API後很明顯的發現兩者的API幾乎是一模一樣,簡直就像StringBuilder的作者直接copy StringBuffer而只是把StringBuffer中所有帶有synchronized的字樣拿掉
以下介紹StringBuffer和StringBuilder兩個有趣的方法reverse() and equals(Object):
⓪reverse() method調整自己的值(reverse ),並且回傳它自己
⓪equals(Object) method並沒有在StringBuffer和StringBuilder,所以如果比較兩個相同內容的StringBuffer或StringBuilder的話還是會回傳false。同樣的也沒有equalsIgnoreCase()方法可用,而都有toString()的方法。
2.想將byte[]轉換成String的話,用byte[].toString()是不行的,貌似是編碼的問題。用new String(byte[])就能正確轉換了。
就是說:
String s="abc";
byte[] b=s.getByte();
String s1=b.toString();
s1的輸出結果就不是"abc"了。
如果這樣:
String s="abc";
byte[] b=s.getByte();
String s1=new String(b);
s1的輸出結果就是"abc"了