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基础学习总结(104)——多线程、并发、工具类相关的面试题

线程的概念 线程是程序执行的最小单位,也是操作系统调度和分派CPU的最小单元,是进程中的一个实体,是进程中的实际运作单位。可以在一个进程中启动多个线程来完成不同的任务,这些线程共享该进程拥有的资源。...

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

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

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

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

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

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

Java基础总结之类与对象的初始化顺序

Java

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

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

Java基础学习总结(102)——Java相关的开源项目

1. Apache的开源软件列表 http://www.oschina.net/project/apache 2. Java开源Apache项目 http://www.open-open.com/56...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JAVA基础——初始化顺序及相关(集各家言论再自己总结的)
举报原因:
原因补充:

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