Java为每个原始类型提供了封装类,Integer是java为int提供的封装类。
int的默认值为0,而Integer的默认值为null,即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况。
执行结果说明,即便不给int类型和Integer类型赋初值,它们仍旧能输出,说明它们有各自的默认值。
执行报错,没有初始化变量,也就是说int和Integer没有默认值。
造成两种结果的原因是什么呢? 经过查阅资料发现,
java静态变量初始化遵循以下规则:
静态变量会按照声明的顺序先依次声明并设置为该类型的默认值,但不赋值为初始化的值。
声明完毕后,再按声明的顺序依次设置为初始化的值,如果没有初始化的值就跳过。
所以静态变量声明之后会自动设置初始化值,输出时有默认值,非静态变量需要初始化才能输出值。