1 / 14
文档名称:

java十大低级错误.doc

格式:doc   大小:64KB   页数:14页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

java十大低级错误.doc

上传人:tmm958758 2019/5/25 文件大小:64 KB

下载得到文件列表

java十大低级错误.doc

相关文档

文档介绍

文档介绍:前言本文档根据java开发人员在编码过程中容易忽视或经常出错的地方进行了整理,总结了十个比较常见的低级错误点,方便大家学****Java十大低级错误不能用“==”比较两个字符串内容相等。对list做foreach循环时,循环代码中不能修改list的结构。日志和实际情况不一致;捕获异常后没有在日志中记录异常栈。魔鬼数字。空指针异常。数组下标越界。将字符串转换为数字时没有捕获NumberFormatException异常。对文件、IO、数据库等资源进行操作后没有及时、正确进行释放。循环体编码时不考虑性能,循环体中包含不需要的重复逻辑。数据类没有重载toString()方法。解读&案例不能用“==”比较两个字符串内容相等。解读两个字符串在比较内容是否相等的时候,如果使用“==”,当两个字符串不是指向内存中同一地址,那么即使这两个字符串内容一样,但是用“==”比较出来的结果也是false。所以两个字符串在比较内容是否相等的时候一定要使用“equals”方法。示例下面就是一个字符串比较的例子:lassTest{ publicstaticvoidmain(String[]args) { Stringa=newString("a"); Stringa2="a"; if(a==a2) { ("a==a2returntrue."); } else { ("a==a2returnfalse."); } if((a2)) { ("(a2)returntrue."); } else { ("(a2)returnfalse."); } }}最终输出的结果为:a==(a2),不能在循环代码中对正在循环的list的结构进行修改,即对list做add、remove等操作,如果做了这些操作,必须立即退出循环,否则会抛出异常。lassTest{ publicstaticvoidmain(String[]args) { List<Person>list=newArrayList<Person>(); Personp1=newPerson("张三",23); Personp2=newPerson("李四",26); Personp3=newPerson("王五",34); Personp4=newPerson("刘二",15); Personp5=newPerson("朱六",40); (p1); (p2); (p3); (p4); (p5); for(Personp:list) { if("王五".equals(())) { (p);//不能在此时删除对象。}elseif("李四".equals(())) { (p);//不能在此时删除对象。} } (()); }}classPerson{ privateStringname; privateintage; publicPerson(Stringname,intage) { =name; =age; } publicStringgetName() { returnname; } publicvoidsetName(Stringname) { =name; } publicintgetAge() { returnage; } publicvoidsetAge(intage) { =age; }}解决上面代码红色部分的问题,可以通过循环取出对象,然后再循环结束后再进行删除。 List<Person>list=newArrayList<Person>(); Personp1=newPerson(newString("张三"),23); Personp2=newPerson(newString("李四"),26); Personp3=newPerson(newString("王五"),34); Personp4=newPerson(newString("刘二"),15); Personp5=newPerson(newString("朱六"),40); (p1); (p2);