`
javatoyou
  • 浏览: 1018719 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

初学Java,初始化块(十三)

阅读更多

初始化块是什么?在Java中就是在构造器之前执行的一段代码,它的用处是,如果一段初始化处理代码对所有对象完全相同,且无须接受任何参数,就可以把这段提取到初始化块中.在C#中,没有初始化块


输出

Person 初始化块:局部变量a的值大于4

Person的第二个初始化块

Person的无参数构造器


初始化块的执行顺序是按定义的顺序执行,最后才轮到构造器

初始化块又分为非静态初使化块和静态初始化块,静态初始化块必须要用static进行修饰,静态初始化块是对类而言,非静态初始化块是对对象而言,但静态初始化块的执行顺序在前,非静态在后.


从上面的执行结果可以看出,类初始化阶段,先执行最顶层父类的静态初始化块,依次向下,最后执行当前类静态初始化块,对象初始化阶段,先执行最顶层父类的初始化块,构造器,依次向下,最后执行当前类初始化块,构造器

分析上面的例子,主程序两次执行new Leaf(); ,创建2个Leaf对象,第一次创建Leaf对象时,系统中还不存在Leaf类,因此需要先加载并初始化Leaf类,初始化Leaf类时会先执行其顶层父类的静态初始化块,最后才执行Leaf本身的静态初始化块.

一旦Leaf类初始化成功后,Leaf类在该虚拟机里将一直存在,因此当第二次创建Leaf实例时无须再次对Leaf类进行初始化.

所以这个执行的优先级为 : 所有类的静态初始化块(从父类自顶向下) -> 所有类的普通初始化块然后接着类的构选器(从父类自顶向下)

如果再实例化一个对象,那么就没有类初始化这个步骤了,因为已经发生在第一次实例化了,类初始化只会发生一次!且在该类的所有对象实例化之前

分享到:
评论

相关推荐

    java初学者必看

    尤其是那些和我一样初学Java的朋友们,看看哪一节对你有用,不妨过来讨论一下哦! 第1章 Java概述 1.1 Java的发展史 1.1.1 Java起源 1.1.2 Java发展 1.2 Java是什么 1.2.1 Java语言 1.2.2 Java平台 1.2.3 ...

    Java ejbCreate初始化EJB代码实例.rar

    Java ejbCreate函数初始化EJB的一个代码实例,代码将创建一个EJB测试客户端程序,演示Address EJB的实现。  代码通过强制转型得到Home接口,用client的getHome()函数调用Home接口函数得到远程接口的引用,用远程...

    java源码包---java 源码 大量 实例

     Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...

    Java初学者入门教学

    4.1 由构建器保证初始化 4.2 方法过载 4.2.1 区分过载方法 4.2.2 主类型的过载 4.2.3 返回值过载 4.2.4 默认构建器 4.2.5 this关键字 4.3 清除:收尾和垃圾收集 4.3.1 finalize()用途何在 4.3.2 必须执行清除 4.4 ...

    java源码包4

     Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...

    java源码包3

     Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...

    Java开发者文档,分享日常学习的一些小知识点 .rar

    很多初学java的新人不知道哪些java基础知识必须掌握,下面小编为大家精心整理的java基础知识点总结,方便大家学习!  方法/步骤  1、对象的初始化  (1) 非静态对象的初始化  在创建对象时,对象所在类的所有...

    java源码包2

     Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...

    JAVA上百实例源码以及开源项目

     Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...

    JAVA上百实例源码以及开源项目源代码

     Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...

    j2me / java me 菜鸟级进度条 loading 初学者试用 高手回避

    初学者试用 高手回避 ...在loading的同时把需要的资源载入 初始化等等 eclipse写的 直接导入就可以了 导入方法:打开eclipse,file->import->Existing Projects into WorkSpace 直接选择你要导入工程的文件夹

    java学习笔记 初学者必读

    5.3. 初始化数组 5-10 5.4. 多维数组 5-10 5.5. 数组拷贝 5-10 6. 五•对象和类 6-11 6.1. 面向对象与面向过程 6-11 6.2. 对象的概念 6-12 6.3. 成员变量和局部变量 6-12 6.4. 成员方法 6-12 6.5. This关键字 6-13 ...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    初学实例,波浪文字 Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始...

    疯狂JAVA讲义

    5.9.2 初始化块和构造器 161 5.9.3 静态初始化块 162 5.10 本章小结 165 本章练习 165 第6章 面向对象(下) 166 6.1 基本数据类型的包装类 167 6.2 处理对象 170 6.2.1 打印对象和toString方法 170 6.2.2 =...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    初学实例,波浪文字 Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始...

    JAVA程序(初学者的好范本,入门者的参考学习,偷懒者的好资源。)

    从其他地方下载来的JAVA程序。 省得大家去浪费时间和精力去...接口,APPLET,CLASS ,JAVA ,THREAD(线程)引用包,数组,对象,初始化,异常,异常的处理:抛出异常、捕获异常等。 例子还有:输入输出流,构造方法。

    Java初学者学习例子源码收集

    内容索引:Java源码,初学实例,初学实例 Java中算术运算符/位运算符的使用/break语句的使用、用do-while语句计算10的阶乘、用for语句计算10的阶乘、Java中对象的初始化、Java中逻辑运算符的使用、求三个数中的最大者...

    ejbCreate函数用于初始化一个EJB实例

    ejbCreate函数用于初始化一个EJB实例,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的get...

Global site tag (gtag.js) - Google Analytics