Java程序员常犯的几类错误
1.忽視異常
相信很多小伙伴在編程的過程中經常對異常置之不理。針對初學者和有經驗的 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中所有元素,但是結果卻沒有成功。原因是忽略了一個關鍵的問題:當一個元素被刪除時,列表的大小縮小并且下標也會隨之變化,所以當你想要在一個循環中用下標刪除多個元素的時候,它并不會正常的生效。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
?
為什么呢? 迭代器(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();
}
}
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
?
4. 訪問級別
許多開發者經常使用public定義字段的訪問級別,這樣方便通過反射獲取字段,但是這是設計非常不好。根據經驗字段的訪問級別設置的越低越好。public,default,protected,private 如果非必要,建議訪問級別設置成private。
?
為了讓學習變得輕松、高效,今天給大家免費分享一套Java入門教學資源。幫助大家在成為Java架構師的道路上披荊斬棘。需要入門的資料歡迎加入學習交流群:928505736
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的Java程序员常犯的几类错误的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java程序员需要掌握哪些技能才能通过大
- 下一篇: 多个for语句嵌套执行顺序_阿里真实面试