- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java软件低级错误
Java软件低级错误(一):资源未及时释放
【解读】
在使用文件、IO流、数据库连接等不会自动释放的资源时,应该在使用完毕后马上将其关闭。关闭资源的代码try...catch...finally的finally内执行,否则可能造成资源无法释放。
Java软件低级错误(二):空指针异常
【解读】
空指针异常是编码过程中最常见的异常,在使用一个对象的时候,如果对象可能为空,需要先判断对象是否为空,再使用这个对象。在进行常量和变量的相等判断时,建议常量对象化判断避免空指针异常:即将常量定义为Java对象封装类型(如将int类型的常量定义为Integer类型),这样在比较时可以将常量放在左边,调用equals方法进行比较,可以省去不必要的判空。
Java软件低级错误(三):下标越界
【解读】
访问数组、List等容器内的元素时,必须首先检查下标是否越界,杜绝下标越界异常的发生。
Java软件低级错误(四):对象比较使用“==”
【解读】
“==”符号只是单纯的比较对象引用的指针是否相等,也就是说Object a,b 若a == b 则说明a和b指向同一个对象,若a和b指向不同的对象,即使这两个对象的值完全相同,这时候a != b。所以我们要用equals()方法判断对象的值是否相等。
Java软件低级错误(五):魔鬼数字
【解读】
在代码中使用魔鬼数字(没有具体含义的数字、字符串等)将会导致代码难以理解,应该将数字定义为名称有意义的常量。
将数字定义为常量的最终目的是为了使代码更容易理解,所以并不是只要将数字定义为常量就不是魔鬼数字了。如果常量的名称没有意义,无法帮助理解代码,同样是一种魔鬼数字。
在个别情况下,将数字定义为常量反而会导致代码更难以理解,此时就不应该强求将数字定义为常量。
Java软件低级错误(六):字符串转数字时未进行异常处理
【解读】
调用Java方法将字符串转换为数字时,如果字符串的格式非法,会抛出运行时异常NumberFormatException。
Java软件低级错误(七):Calendar的错误使用
【解读】
Calendar从星期日开始到星期六为一个周期,数字表示依次为:1,2,3……7;MONTH的表示是从数字0开始,所以月份应该是该数字+1。所以我们在使用的时候一定要仔细的阅读API文档,避免类似的陷阱。
Java软件低级错误(八):序列化类的多版本问题
【解读】
Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体(类)的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常。当实现java.io.Serializable接口的实体(类)没有显式地定义serialVersionUID时,Java序列化机制会根据编译的class自动生成一个serialVersionUID作序列化版本比较用,这种情况下,只有同一次编译生成的 class才会生成相同的serialVersionUID 。
Java软件低级错误(九):Java参数传递:传值还是传引用?
【解读】
对于原始数据类型,也就是int、 long、char之类的类型,是传值的,如果你在方法中修改了值,方法调用结束后,那个变量的值没有改变。
对于对象类型,也就是Object的子类,如果你在方法中修改了它的成员的值,那个修改是生效的,方法调用结束后,它的成员是新的值,但是如果你把它指向一个其它的对象,方法调用结束后,原来对它的引用并没用指向新的对象。
Java软件低级错误(十):正确定义hashcode
【解读】
类A覆写了hashCode方法,并采用A的属性value来生成A的hashCode。使用HashSet作为集合对象,把类A的一个对象a加入到HashSet中后,如果对象a的属性value发生了变化,则a的hashCode()方法返回的值也就发生变化,则无法将对象a从HashSet中删除。
Java软件低级错误(十一):正确理解Java的浅clone和深clone
【解读】
浅clone和深clone都是clone,它们本质区别是对象内部的成员属性(非原生类型属性,如int等)在clone时是否处理为引用。如果仍然保留为引用,则称为浅clone,反之称为深clone。浅clone方式得到clone对象即可,深clone方式在得到clone对象后,还需要对引用的成员属性进行“clone”处理。使用Vector等容器的clone方法一定要注意:对于不变属性可以直接拷贝,对于可变属性需要手动写方法实现深层拷贝
您可能关注的文档
最近下载
- 架子工安全管理制度.pdf VIP
- GB_T 19634-2021体外诊断检验系统.docx VIP
- 2025-2030年中国智能炮弹市场深度调研及投资战略项目研究报告.docx
- 火灾自动报警及消防联动控制系统施工方案.doc VIP
- 《酒店客户关系管理 》课件——项目六 酒店客户流失与挽救.pptx VIP
- 火灾自动报警及消防联动控制系统施工方案.docx VIP
- 《酒店客户关系管理 》课件——项目五 酒店客户满意度与忠诚度.pptx VIP
- 2025年农业物联网在农业科技创新体系中的应用与构建报告.docx
- 《酒店客户关系管理 》课件——项目八 酒店客户关系数字化运营.pptx VIP
- 《酒店客户关系管理 》课件——项目七 酒店客户关系管理数字化技术.pptx VIP
文档评论(0)