假设有个名为Cat类:
1、即使没有显示地使用static关键字,构造器实际上也是静态方法。因此在创建类型为Cat的对象时,或者Cat类的静态方法/静态域被首次访问时(被引用),java解释器必须查找类途径(classpath上查找),以定位Cat.class文件。
2,、然后类加载器载入Cat.class,有关静态初始化的所有动作都会执行。并且,静态初始化只在Class对象首次加载时进行一次(关键字为static,与类绑定,通过类便可以访问这一变量,同时该类的对象共享这一资源。)
3、当用new Cat()创建对象时,首先在堆上为Cat对象分配好足够的存储空间。
4、这块存储空间会被清零,这就自动将Cat对象中的所有基本类型数据都设置成默认值(数字为0、布尔型和字符型也相同),引用被置为null。
5、执行所有出现于字段定义出的初始化动作。(按照语句位置的顺序初始化)
6、执行构造器。
public static void main(String args[])
这是java程序执行的入口,是一个静态方法。当执行到这句话的时候,解释器便会寻找改类的.class文件,并将其加载进来(先加载父类、再加载接口等),初始化的时候,将这个类的静态变量先初始化(按照代码的顺序位置)、然后是初始化非静态引用对象、最后执行构造器。
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/u012312373/article/details/46718911