在看Think in java 中看到这样一句话:

“未初始化的局部变量更有可能是程序员的疏忽, 所以采用默认值反而会掩盖这种失误”

然后才去验证,发现,局部变量都必须要显式地初始化,不然编译不通过。

而全局变量不用显式地初始化,如果漏掉初始化,系统默认给以初始值:

int ---> 0
long ---> 0L
boolean ---> false
Object ---> null     等等

对于全局变量的默认初始化:  “无法阻止自动初始化的进行, 它将在构造器发生之前发生”。

在创建对象时“这块存储空间会被清零,这就自动的将对象中的所有基本类型设置为默认值,而引用设置为NULL”

之前我的理解是:对象在生成时,利用反射可以得到类信息,所以类中的全局变量就可以被默认赋值,但是局部变量是方法被调用之后才会分配存储空间的,也无法通过反射手段得到变量信息,所以必须显式初始化。