Java程式設計師常犯的幾類錯誤
1. 忽視異常
相信很多小夥伴在程式設計的過程中經常對異常置之不理。針對初學者和有經驗的 Java 程式員,最佳實踐仍是處理它們。異常丟擲通常是帶有目的性的,因此在大多數情況下需要記錄引起異常的事件。不要小看這件事,如果必要的話,你可以重新丟擲它,在一個對話方塊中將錯誤資訊展示給使用者或者將錯誤資訊記錄在日誌中。至少,為了讓其它開發者知曉前因後果,你應該解釋為什麼沒有處理這個異常。

java程式設計
2.ArrayList與LinkedList
這兩個似乎很像,當我們不知道之間的區別ArrayList和LinkedList就經常使用ArrayList,因為它看起來很熟悉。但是,它們之間存在巨大的效能差異。LinkedList如果存在大量的新增/刪除操作並且沒有大量的隨機訪問操作,則應該首選。
3.在迴圈中刪除列表中的元素
在討論這個問題之前,先考慮以下程式碼的輸出結果:
ArrayList<String> list = new ArrayList<String>(Arrays.asList("a","b","c","d"));
for(int i=0;i<list.size();i++){
list.remove(i);
}
以上程式碼的目的是想遍歷刪除list中所有元素,但是結果卻沒有成功。原因是忽略了一個關鍵的問題:當一個元素被刪除時,列表的大小縮小並且下標也會隨之變化,所以當你想要在一個迴圈中用下標刪除多個元素的時候,它並不會正常的生效。

java學習
為什麼呢? 迭代器(Iterator)是工作在一個獨立的執行緒中,並且擁有一個 mutex 鎖。 迭代器被建立之後會建立一個指向原來物件的單鏈索引表,當原來的物件數量發生變化時,這個索引表的內容不會同步改變,所以當索引指標往後移動的時候就找不到要迭代的物件,所以按照 fail-fast 原則 迭代器會馬上丟擲java.util.ConcurrentModificationException 異常。
正確的在遍歷過程中刪除元素的方法應該是使用Iterator:
ArrayList<String> list = new ArrayList<String>(Arrays.asList("a", "b", "c", "d"));
Iterator<String> iter = list.iterator();
while (iter.hasNext()) {
String s = iter.next();
if (s.equals("a")) {
iter.remove();
}
}

java學習
4. 訪問級別
許多開發者經常使用public定義欄位的訪問級別,這樣方便通過反射獲取欄位,但是這是設計非常不好。根據經驗欄位的訪問級別設定的越低越好。public,default,protected,private 如果非必要,建議訪問級別設定成private。

java學習
為了讓學習變得輕鬆、高效,今天給大家免費分享一套Java入門教學資源。幫助大家在成為Java架構師的道路上披荊斬棘。需要入門的資料歡迎加入學習交流群:928505736