1. 使用new新建对象时,初始化顺序为:静态变量>成员变量>构造方法。 静态初始化块以静态变量对待
2. 建立类的Class对象,但没有执行new时(如访问任何静态变量、或者调用静态方法、或者调用Class.forName方法等。使用Class<A> a = A.class则不会触发)都会进行静态变量的初始化。此时成员变量、构造方法未初始化。静态变量只会被初始化一次。
3. 同种变量的初始化,按照代码中的书写顺序进行,无论变量声明在类头、方法之间、类尾。
4. 执行构造方法时,从祖先至子孙依次进行。“创建过程是由基类'向外'扩散的”。那么如果new一个子类对象,子类构造方法中的代码应在父类静态变量>父类成员变量>父类构造方法>子类静态变量>子类成员变量之后执行。
假设有个名为Dog的类:
1. 当首次创建类型为Dog的对象时(构造器可以看成静态方法),或者Dog类的静态方法/静态域首次被访问时,Java解释器必须查找类路径,以定位Dog.class文件。
2. 然后载入Dog.class(这将创建一个Class对象), 有关静态初始化的动作都会执行。因此,静态初始化只在Class对象首次加载的时候执行一次。
3. 当你用new Dog()创建对象的时候,首先在堆上为Dog对象分配足够高的存储空间。
4. 这块存储空间会被清零,这就自动的将Dog中的所有基本类型数据设置成了默认值(对于数字来说就是0,对布尔型和字符型也相同),而引用则被设置成了null。
5. 执行所有出现于域定义处的初始化动作。
6. 执行构造器。
相关推荐
面向对象编程的基础 要了解面向对象编程(OOP)的基本概念,需要理解 OOP 的三个主要概念,它们撑起 了整个 OOP 的框架。这三个概念是:封装、继承性和多态性。除此以外,还需了解对象、 类、消息、接口、及抽象等...
----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...
上架时间:2010-3-30 出版日期:2010 年3月 开本:16开 其他详细信息查看:http://www.china-pub.com/196571 编辑推荐 Java编程老鸟潜心写作,奉献高效率的Java学习心得 完全站在没有编程经验读者的角度,...
上架时间:2010-3-30 出版日期:2010 年3月 开本:16开 其他详细信息查看:http://www.china-pub.com/196571 编辑推荐 Java编程老鸟潜心写作,奉献高效率的Java学习心得 完全站在没有编程经验读者的角度,...
在这一章的最后,我们将更贴近地观察初始化过程:自动成员初始化、指定成员初始化、初始化的顺序、static(静态)初始化以及数组初始化等等。 <br>(5) 第5章:隐藏实现过程 本章要探讨将代码封装到一起的方式...
实例085 域的默认初始化值 106 实例086 编写同名的方法 107 实例087 构造方法的应用 108 5.2 修饰符的使用 109 实例088 单例模式的应用 109 实例089 祖先的止痒药方 110 实例090 统计图书的销售量 111 实例091 汉诺...
g.drawString("这是一个Java Applet 程序",10,30);//在Java Applet中绘制一行文字:“这是一个Java Applet 程序” g.setColor(Color.red); g.setFont(new Font("宋体",Font.BOLD,36)); g.drawString("我改变了...
4、修改6.X版里客户资料的排序方式,改回按录入顺序的排序; 5、修改6.X版里订水记录的排序方式,未配送完的单排上面(有颜色区分),配送完的单按时间先后排下 面; 6、增加销售订单的备注查询; -------------...
.initialCacheNames(cacheNames) /* 注意这两句的调用顺序,一定要先调用该方法设置初始化的缓存名,再初始化相关的配置 */ .withInitialCacheConfigurations(configMap).build(); return cacheManager; } 框架中...
日期类型 date 7字节 用于存储表中的日期和时间数据,取值范围是公元前4712年1月1日至公元9999年12月31日,7个字节分别表示世纪、年、月、日、时、分和秒 二进制数据类型 row 1~2000字节 可变长二进制数据,在具体...
面向对象的思想方法已经非常流行了,在编程语言(例如java,js)中,都运用面向对象的编程思想。在XML中,就是要将网页也作为一个对象来操作和控制,我们可以建立自己的对象和模板。与对象进行交流,如何命令对象,...
在模板里对sequences和hashes初始化 sequences 1. [“you”,”me”,”he”] 2. 1..100 3. [ {“Akey”:”Avalue”},{“Akey1”:”Avalue1”}, {“Bkey”:”Bvalue”},{“Bkey1”:”Bvalue1”}, ] hashes {“you”:...