JAVA基础——初始化顺序及相关(集各家言论再自己总结的)

原创 2011年01月11日 15:17:00

 

 

 

 

运行得到的结果应该是:

Parent static initialization

Child static initialization

Parent initialization

Parent constructor

Child initialization

Child constructor

Parent initialization

Parent constructor

Child initialization

Child constructor

nChildStaticValue =7,nChildValue = 7

初始化顺序是: 

(1) 先是父类的static变量和static初始化块 (因为在TestFinalize 的main中需要使用Child这个类,所以JVM才去加载它,结果发现它继承自Parent,那么就会发现需要先加载Parent这个class,所以我们会发现是 Parent的static field被初始化&static initialization 先执行,然后child的 static field被初始化&static initialization 执行,static field和static块执行的顺序则是按照它在代码里面书写的顺序从上到下执行的)


(2)然后是子类的static变量和static初始化块   

(3)父类的实例变量、初始化块 (initialization会在每次new一个对象的时候都执行,它和constructor的区别见下面的叙述)

(4)父类的构造方法 

(5)子类的实例变量、初始化块 

(6)子类构造方法 

 

初始化块(Initialization)和构造器(Constructor)

   从某种程度上来讲,可以理解为初始化块是构造器的补充,因为初始化快总是在构造器之前执行,同样也可以对对象初始化.

   与构造器不同的是:初始化块只能执行一段固定的代码,不能够像构造器一样接受参数,而且是对类的所有的对象进行初始化.

    跟构造器一样的,程序在执行的时候不仅会执行当前类的初始化快和构造器,会一直追溯到object类的初始化快和构造器.先执行父类的初始化块和构造器(先初始化块,再构造器),然后再执行当前类的初始化块和构造器.

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Java基础知识—— 静态数据的初始化(含初始化顺序)

1. 初始化顺序 在一个类里,初始化的顺序是由变量在类内的定义顺序决定的。即使变量定义大量遍布于方法定义的中间, 那些变量仍会在调用任何方法之前得到初始化——甚至在构建器调用之前。例如: class ...

Java基础——Static修饰符+静态相关+帮助文档制作+对象初始化_调用成员过程+单例设计

一、Static修饰符 String name;//成员变量,实例(对象)变量。 Static String name;//静态的成员变量,类变量。 用于修饰成员(变量,函数) 当每个对象都有...

Java学习总结11——基础类库1(String相关类)

1.Stringxiang'jie String类是Java中最常用的对象之一

面试总结(一)——Java基础相关知识

面试总结(一)——Java基础相关知识最近在面试,所以总结下面试容易问到的知识点,用来备份查看用。 若需转载,请注明出处。1.面向对象的特点; 1.将复杂的事情简单化 2.面向对象将以前过程中的...

Java学习总结6——类加载1(类初始化顺序)

出处:http://www.cnblogs.com/jackyrong/archive/2008/08/12/1266161.html 我们大家都知道,对于静态变量、静态初始化块、变量、初始化块、构...

黑马程序员——Java中对象初始化的顺序与原理 总结

对象初始化过程 构造代码块 构造器

Java基础——对象加载顺序

加载类.class文件 执行静态代码块(static) 在堆内存开启空间分配内存 在堆内存建立特有属性.初始化 对属性进行显示初始化 对象进行构造代码块初始化 对象进行对应构造...

黑马程序员——Java基础查找算法:顺序查找和二分查找

——- android培训、java培训、期待与您交流! ———- /* 需求:在数组中查找指定的数据 一、顺序查找法思路: 遍历整个数组,将指定要找的数与数组中的所有元素比较,如果相...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)