如果在构造器中没有显式地给域赋予初值,那么就会被自动地赋为默认值:数值为0、布尔值为flase、对象引用为null。然而,只有缺少程序设计经验的人才会这样做。确实,如果不明确地对域进行初始化,就会影响程序代码的可读性。

    注释:这是域与局部变量的主要不同点。必须明确地初始化方法中的局部变量。但是,如果没有初始化类中的域,将会被初始化为默认值(0,flase或null)。

    例如,仔细看一下Employee类。假定没有在构造器中对某些域进行初始化,就会默认地将salary域初始化为0,将name、hireDay域初始化为null。

    但是,这个并不是一种良好的编程习惯。如果此时调用getName方法或geiHireDay方法,则会得到一个null引用,这应该不是我们所希望的结果:

  1. Date h = hary.getHireDay(); 
  2. calendar.setTime(h);    // throws exception if h is null