购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

陷阱9

顺理成章
——静态常量的初始化顺序有讲究

静态常量是程序中经常使用的元素,如果在程序中存在多个静态常量,并且是通过调用方法实现初始化常量的操作的,则一定要注意这些静态常量的排列顺序,如果顺序不正确,程序很有可能就会出现错误的结果,所以在使用多个静态常量,特别是通过调用方法实现初始化时,一定要特别小心。

接下来通过两个示例来说明,为什么在使用多个静态成员变量时,必须要注意它们的排列顺序。

(1)错误结果

说 明

运行本示例,程序将输出“您的工龄是:-2005”这样的信息,显然这是错误的结果,原因就在于 标记处的两行代码顺序不正确,所以导致了结果错误。

注 意

本示例是这样一个执行过程,程序首先执行 标记处的代码创建Employee类的实例,在创建实例时,执行 标记处构造方法里的代码,即执行 标记处的代码,但是此时 标记处的代码中使用的CURRENT_YEAR常量还没有被赋值,而是使用int型的初始值 0,所以 标记处的代码计算出的成员变量workAges的值是-2005,然后才会执行 标记处的代码调用 标记处的currentYear方法为CURRENT_YEAR常量赋值为当前年 2010,但是此时已经太迟了,因为员工工龄已经计算出来是-2005。

(2)正确结果

将上一个示例中 标记处的两行代码位置互换,这样程序就可以输出正确的员工工龄了,下面用黑体标识的两行就是互换后的代码。

说 明

运行本示例,程序将输出“您的工龄是:5”这样的信息,显然这是正确的结果,也就是员工的真实工龄,通过本示例也足以说明静态常量的初始化顺序对程序的执行结果是有影响的,因此在使用静态常量并需要对其进行初始化时,一定要注意语句的放置顺序,否则程序就会出错。 MuujPq8xnzcKNQHpHJ0+dWjw7DVOHREvDwPbZpj8YDEkMsg7PRVn3OCdU5v4zA3g

点击中间区域
呼出菜单
上一章
目录
下一章
×