Java程序员常犯的几类错误
1.忽視異常
相信很多小伙伴在編程的過程中經(jīng)常對(duì)異常置之不理。針對(duì)初學(xué)者和有經(jīng)驗(yàn)的 Java 程序員,最佳實(shí)踐仍是處理它們。異常拋出通常是帶有目的性的,因此在大多數(shù)情況下需要記錄引起異常的事件。不要小看這件事,如果必要的話,你可以重新拋出它,在一個(gè)對(duì)話框中將錯(cuò)誤信息展示給用戶或者將錯(cuò)誤信息記錄在日志中。至少,為了讓其它開發(fā)者知曉前因后果,你應(yīng)該解釋為什么沒有處理這個(gè)異常。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
?
2.ArrayList與LinkedList
這兩個(gè)似乎很像,當(dāng)我們不知道之間的區(qū)別ArrayList和LinkedList就經(jīng)常使用ArrayList,因?yàn)樗雌饋砗苁煜ぁ5?#xff0c;它們之間存在巨大的性能差異。LinkedList如果存在大量的添加/刪除操作并且沒有大量的隨機(jī)訪問操作,則應(yīng)該首選。
3.在循環(huán)中刪除列表中的元素
在討論這個(gè)問題之前,先考慮以下代碼的輸出結(jié)果:
ArrayList<String> list = new ArrayList<String>(Arrays.asList("a","b","c","d"));
for(int i=0;i<list.size();i++){
list.remove(i);
}
以上代碼的目的是想遍歷刪除list中所有元素,但是結(jié)果卻沒有成功。原因是忽略了一個(gè)關(guān)鍵的問題:當(dāng)一個(gè)元素被刪除時(shí),列表的大小縮小并且下標(biāo)也會(huì)隨之變化,所以當(dāng)你想要在一個(gè)循環(huán)中用下標(biāo)刪除多個(gè)元素的時(shí)候,它并不會(huì)正常的生效。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
?
為什么呢? 迭代器(Iterator)是工作在一個(gè)獨(dú)立的線程中,并且擁有一個(gè) mutex 鎖。 迭代器被創(chuàng)建之后會(huì)建立一個(gè)指向原來對(duì)象的單鏈索引表,當(dāng)原來的對(duì)象數(shù)量發(fā)生變化時(shí),這個(gè)索引表的內(nèi)容不會(huì)同步改變,所以當(dāng)索引指針往后移動(dòng)的時(shí)候就找不到要迭代的對(duì)象,所以按照 fail-fast 原則 迭代器會(huì)馬上拋出java.util.ConcurrentModificationException 異常。
正確的在遍歷過程中刪除元素的方法應(yīng)該是使用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. 訪問級(jí)別
許多開發(fā)者經(jīng)常使用public定義字段的訪問級(jí)別,這樣方便通過反射獲取字段,但是這是設(shè)計(jì)非常不好。根據(jù)經(jīng)驗(yàn)字段的訪問級(jí)別設(shè)置的越低越好。public,default,protected,private 如果非必要,建議訪問級(jí)別設(shè)置成private。
?
為了讓學(xué)習(xí)變得輕松、高效,今天給大家免費(fèi)分享一套Java入門教學(xué)資源。幫助大家在成為Java架構(gòu)師的道路上披荊斬棘。需要入門的資料歡迎加入學(xué)習(xí)交流群:928505736
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的Java程序员常犯的几类错误的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java程序员需要掌握哪些技能才能通过大
- 下一篇: 自学Java必看的知识点,猿们怎么看?