`
songzhan
  • 浏览: 240337 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

4月30 -- java基础(Java对象初始化顺序)

阅读更多

 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. 执行构造器。

分享到:
评论

相关推荐

    Java 语言基础 —— 非常符合中国人习惯的Java基础教程手册

    面向对象编程的基础 要了解面向对象编程(OOP)的基本概念,需要理解 OOP 的三个主要概念,它们撑起 了整个 OOP 的框架。这三个概念是:封装、继承性和多态性。除此以外,还需了解对象、 类、消息、接口、及抽象等...

    新版Android开发教程.rar

    ----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    上架时间:2010-3-30 出版日期:2010 年3月 开本:16开 其他详细信息查看:http://www.china-pub.com/196571 编辑推荐 Java编程老鸟潜心写作,奉献高效率的Java学习心得 完全站在没有编程经验读者的角度,...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    上架时间:2010-3-30 出版日期:2010 年3月 开本:16开 其他详细信息查看:http://www.china-pub.com/196571 编辑推荐 Java编程老鸟潜心写作,奉献高效率的Java学习心得 完全站在没有编程经验读者的角度,...

    超爽的自学课件(java)

    在这一章的最后,我们将更贴近地观察初始化过程:自动成员初始化、指定成员初始化、初始化的顺序、static(静态)初始化以及数组初始化等等。 &lt;br&gt;(5) 第5章:隐藏实现过程 本章要探讨将代码封装到一起的方式...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例085 域的默认初始化值 106 实例086 编写同名的方法 107 实例087 构造方法的应用 108 5.2 修饰符的使用 109 实例088 单例模式的应用 109 实例089 祖先的止痒药方 110 实例090 统计图书的销售量 111 实例091 汉诺...

    Java 2实用教程(第三版)实验指导与习题解答

    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、增加销售订单的备注查询; -------------...

    Spring Cloud Finchley SR2全套(集成Spring Gateway)

    .initialCacheNames(cacheNames) /* 注意这两句的调用顺序,一定要先调用该方法设置初始化的缓存名,再初始化相关的配置 */ .withInitialCacheConfigurations(configMap).build(); return cacheManager; } 框架中...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    日期类型 date 7字节 用于存储表中的日期和时间数据,取值范围是公元前4712年1月1日至公元9999年12月31日,7个字节分别表示世纪、年、月、日、时、分和秒 二进制数据类型 row 1~2000字节 可变长二进制数据,在具体...

    XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解

    面向对象的思想方法已经非常流行了,在编程语言(例如java,js)中,都运用面向对象的编程思想。在XML中,就是要将网页也作为一个对象来操作和控制,我们可以建立自己的对象和模板。与对象进行交流,如何命令对象,...

    freemarker总结

    在模板里对sequences和hashes初始化 sequences 1. [“you”,”me”,”he”] 2. 1..100 3. [ {“Akey”:”Avalue”},{“Akey1”:”Avalue1”}, {“Bkey”:”Bvalue”},{“Bkey1”:”Bvalue1”}, ] hashes {“you”:...

Global site tag (gtag.js) - Google Analytics