資源描述:
《java十大低級錯誤》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、Java十大低級錯誤1前言本文檔根據(jù)java開發(fā)人員在編碼過程中容易忽視或經(jīng)常出錯的地方進行了整理,總結(jié)了十個比較常見的低級錯誤點,方便大家學(xué)習(xí)。2Java十大低級錯誤1、不能用“==”比較兩個字符串內(nèi)容相等。2、對list做foreach循環(huán)時,循環(huán)代碼中不能修改list的結(jié)構(gòu)。3、日志和實際情況不一致;捕獲異常后沒有在日志中記錄異常棧。4、魔鬼數(shù)字。5、空指針異常。6、數(shù)組下標(biāo)越界。7、將字符串轉(zhuǎn)換為數(shù)字時沒有捕獲NumberFormatException異常。8、對文件、IO、數(shù)據(jù)庫等資源進行操作后沒有及時、正確進行釋放。9、循環(huán)體編碼時不考慮性能,循環(huán)體中包含不需
2、要的重復(fù)邏輯。10、數(shù)據(jù)類沒有重載toString()方法。3解讀&案例3.1不能用“==”比較兩個字符串內(nèi)容相等。3.1.1解讀兩個字符串在比較內(nèi)容是否相等的時候,如果使用“==”,當(dāng)兩個字符串不是指向內(nèi)存中同一地址,那么即使這兩個字符串內(nèi)容一樣,但是用“==”比較出來的結(jié)果也是false。所以兩個字符串在比較內(nèi)容是否相等的時候一定要使用“equals”方法。1.1.1示例下面就是一個字符串比較的例子:publicclassTest{publicstaticvoidmain(String[]args){Stringa=newString("a");Stringa2="a
3、";if(a==a2){System.out.println("a==a2returntrue.");}else{System.out.println("a==a2returnfalse.");}if(a.equals(a2)){System.out.println("a.equals(a2)returntrue.");}else{System.out.println("a.equals(a2)returnfalse.");}}}最終輸出的結(jié)果為:a==a2returnfalse.a.equals(a2)returntrue.1.2不能在foreach循環(huán)中修改list結(jié)
4、構(gòu)1.2.1解讀在jdk1.5版以上的foreach循環(huán)寫法中,不能在循環(huán)代碼中對正在循環(huán)的list的結(jié)構(gòu)進行修改,即對list做add、remove等操作,如果做了這些操作,必須立即退出循環(huán),否則會拋出異常。1.1.1示例publicclassTest{publicstaticvoidmain(String[]args){Listlist=newArrayList();Personp1=newPerson("張三",23);Personp2=newPerson("李四",26);Personp3=newPerson("王五",34);Pe
5、rsonp4=newPerson("劉二",15);Personp5=newPerson("朱六",40);list.add(p1);list.add(p2);list.add(p3);list.add(p4);list.add(p5);for(Personp:list){if("王五".equals(p.getName())){list.remove(p);//不能在此時刪除對象。}elseif("李四".equals(p.getName())){list.remove(p);//不能在此時刪除對象。}}System.out.println(list.size());}
6、}classPerson{privateStringname;privateintage;publicPerson(Stringname,intage){this.name=name;this.age=age;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicintgetAge(){returnage;}publicvoidsetAge(intage){this.age=age;}}解決上面代碼紅色部分的問題,可以通過循環(huán)取出對象,然后再循環(huán)結(jié)束后再
7、進行刪除。Listlist=newArrayList();Personp1=newPerson(newString("張三"),23);Personp2=newPerson(newString("李四"),26);Personp3=newPerson(newString("王五"),34);Personp4=newPerson(newString("劉二"),15);Personp5=newPerson(newString("朱六"),40);list.add(p1);list.add(p2);