Java 软件低级错误
档
级
Java软件低级错误 软件低级错误 1 Java 软件低级错误(一):资源未及时释放 软件低级错误( ):资源未及时释放
【解读】 在使用文件、IO流、数据库连接等不会自动释放的资源时,应该在使用完毕后马上将 其关闭。关闭资源的代码try...catch...finally的finally内执行,否则可能造成资源无法释放。
2 Java 软件低级错误(二):空指针异常 软件低级错误( ):空指针异常
【解读】 空指针异常是编码过程中最常见的异常,在使用一个对象的时候,如果对象可能为空, 需要先判断对象是否为空,再使用这个对象。在进行常量和变量的相等判断时,建议常量对 象化判断避免空指针异常:即将常量定义为Java对象封装类型(如将int类型的常量定义为 Integer类型),这样在比较时可以将常量放在左边,调用equals方法进行比较,可以省去不 必要的判空。
3 Java 软件低级错误(三):下标越界 软件低级错误( ):下标越界
【解读】 访问数组、List等容器内的元素时,必须首先检查下标是否越界,杜绝下标越界异常的 发生。
4 Java 软件低级错误(四):对象比较使用“==” 软件低级错误( ):对象比较使用 对象比较使用“ ”
【解读】 “==”符号只是单纯的比较对象引用的指针是否相等,也就是说Object a,b 若a == b 则说明a和b指向同一个对象,若a和b指向不同的对象,即使这两个对象的值完全相同,这时 候a != b。所以我们要用equals()方法判断对象的值是否相等。
2012-5-20
未经许可不得扩散
第 1 页, 共 6 页
Java 软件低级错误
档
级
5 Java 软件低级错误(五):魔鬼数字 软件低级错误( ):魔鬼数字
【解读】 在代码中使用魔鬼数字(没有具体含义的数字、字符串等)将会导致代码难以理解,应 该将数字定义为名称有意义的常量。 将数字定义为常量的最终目的是为了使代码更容易理解, 所以并不是只要将数字定义为 常量就不是魔鬼数字了。如果常量的名称没有意义,无法帮助理解代码,同样是一种魔鬼数 字。 在个别情况下, 将数字定义为常量反而会导致代码更难以理解, 此时就不应该强求将数 字定义为常量。
6 Java 软件低级错误(六):字符串转数字时未进行异常 软件低级错误( ):字符串转数字时未进行异常 处理
【解读】 调用Java方法将字符串转换为数字时,如果字符串的格式非法,会抛出运行时异常 NumberFormatException。
7 Java 软件低级错误(七): 软件低级错误( ):Calendar 的错误使用
【解读】 Calendar从星期日开始到星期六为一个周期,数字表示依次为:1,2,3……7;MONTH 的表示是从数字0开始,所以月份应
该是该数字+1。所以我们在使用的时候一定要仔细的阅 读API
文档,避免类似的陷阱。
8 Java 软件低级错误(八):序列化类的多版本问题 软件低级错误( ):序列化类的多版本问题
【解读】 Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。 在进 行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体(类)的
2012-5-20
未经许可不得扩散
第 2 页, 共 6 页
Java 软件低级错误
档
级
serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现 序列化版本不一致的异常。当实现java.io.Serializable接口的实体(类)没有显式地定义 serialVersionUID时, Java序列化机制会根据编译的class自动生成一个serialVersionUID作序列 化版本比较用, 这种情况下, 只有同一次编译生成的 class才会生成相同的serialVersionUID 。
9 Java 软件低级错误(九): 软件低级错误( ):
Java 参数传递:传值还是传 参数传递: 引用? 引用?
【解读】 对于原始数据类型,也就是int、 long、char之类的类型,是传值的,如果你在方法中 修改了值,方法调用结束