当用一个类来创建对象的时候,JVM会帮我们执行下面的6个步骤。
1、在磁盘上找到对应内的class文件;
2、加载class文件到内存,初始化所有静态域(成员变量和方法);
3、如果使用new class()时,在堆上开辟一片空间;
4、将这片空间清零(对于基本类型来说,设置为0;对于引用类型来说,设置为null);
5、执行非静态域的成员变量的初始化(包括普通类型和应用类型);
6、执行构造函数。
这就是为什么类里面的静态成员和静态函数可以不用创建对象,直接用类来访问的原因,因为这些静态域已经在第2步,完成了加载和初始化,已经在内存中生效了,
并且只在内存中只有一份,也就是说无论这个类被用来创建了多少对象,这些静态域只被加载和初始化一次。
如果没有创建对象,那么只会执行上面的1和2两个步骤,3,4,5,6,要在创建对象的时候才会被执行。