前提概要
Java为每个原始类型提供了封装类,Integer是java为int提供的封装类。
int的默认值为0,而Integer的默认值为null,即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况。
代码示例
public class TestJava {public static int i;public static Integer j;public static void main(String[] args) {System. out.println(i);System. out.println(j);}
}
输出:
0
null
由此看出int的默认值为0,而Integer的默认值为null。那如果将i和j定义到main方法里呢?
public class TestJava {public static void main(String[] args) {int i;Integer j;System. out.println(i);System. out.println(j);}}
运行:
为啥这样就失败了呢?查阅static关键词后发现:
将一个方法声明为静态方法,通常是为了方便在不创建对象的情况下调用。那我们可以理解为将方法声明为静态就可以出创建对象,int是基础类型,integer是包装类 加了static就省略了new了,非静态变量需要初始化才能输出值
另外,Java静态变量初始化遵循以下规则:
1.静态变量会按照声明的顺序先依次声明并设置为该类型的默认值,但不赋值为初始化的值。
2.声明完毕后,再按声明的顺序依次设置为初始化的值,如果没有初始化的值就跳
链接:JAVA关于对象创建过程中初始化和声明顺序问题