== 是用於比較對象的引用地址的,或者說是否指向同一個變量。
equals是比較對象的真實值的面試
char[] 是能夠修改的,String是不可變對象,建立以後沒法修改,沒法刪除,只能等到JVM垃圾回收。編程
JDK7 是支持在switch中使用字符串比較的,但Android目前仍是基於JDK6的。數組
int a = Integer.partInt("124");安全
String [] a = aString.split(" ");數據結構
JDK7 中 subString(m, n) 會建立一個新的字符串。多線程
String 不可變對象。
StringBuilder 線程不安全類,速度比StringBuffer快。
StringBuffer 線程安全類,內部使用同步機制。框架
根據實際的使用狀況選擇合適的數據結構,例如固定大小的仍是須要增長大小的,有重複元素的仍是沒有的,須要保持有序仍是不須要,遍歷是正向的仍是雙向的,插入是在末尾的仍是任意位置的,更多的插入仍是更多的讀取,是否須要並行訪問,是否容許修改,元素類型是相同的仍是不一樣的,等等。另外,還須要儘早考慮多線程,原子性,內存使用量以及性能等因素。性能
不要假設你的集合裏元素的數量一直會保持較小,它也有可能隨着時間增加。因此,你的集合最好可以給定一個合適的大小。ui
針對接口編程優於針對實現編程。例如,可能在某些狀況下,LinkedList是最佳的選擇,可是後來ArrayList可能由於性能的緣由變得更加合適
很差的方式線程
ArrayList list = new ArrayList(100);
好的方式,針對接口編程
// program to interface so that the implementation can change List list = new ArrayList(100); List list2 = new LinkedList(100); List emptyList = Collections.emptyList( ); Set emptySet = Collections.emptySet( );
在取得列表的時候,若是返回的結果是空的話,最好返回一個長度爲0的集合或者數組,而不要返回null。由於,返回null的話可能能會致使程序錯誤。調用你的方法的開發人員可能會忘記對返回爲null的狀況進行處理。
封裝好集合:通常來講,集合都是不可變的對象。因此儘可能不要把集合的成員變量暴露給調用者。由於他們的操做通常都不會進行必要的校驗。