`

Java中的数据成员初始化顺序

    博客分类:
  • Java
阅读更多

1-类的静态初始化块(注:只会第一次使用到这个类的时候被执行一次)
2-类的静态数据成员
3-类的非静态初始化块
4-类的非静态数据成员
5-类的构造函数

example in 《Thinking in java》

java 代码
  1. class Bowl{   
  2.     Bowl(int marker){   
  3.         System.out.println("Bowl :"+marker);   
  4.     }   
  5.     void f(int marker){   
  6.         System.out.println("f :"+marker);   
  7.     }   
  8. }   
  9.   
  10. class Table{   
  11.     static Bowl b1=new Bowl(1);   
  12.     Table(){   
  13.         System.out.println("Table()");   
  14.         b2.f(1);   
  15.     }   
  16.        
  17.     void f2(int marker){   
  18.         System.out.println("f2 :"+marker);   
  19.     }   
  20.     static Bowl b2=new Bowl(2);   
  21. }   
  22.   
  23. class Cupboard{   
  24.     Bowl b3=new Bowl(3);   
  25.     static Bowl b4=new Bowl(4);   
  26.     Cupboard(){   
  27.         System.out.println("Cupboard()");   
  28.         b4.f(2);   
  29.     }   
  30.     void f3(int marker){   
  31.         System.out.println("f3 :"+marker);   
  32.     }   
  33.     static Bowl b5=new Bowl(5);   
  34. }   
  35.   
  36.   
  37. public class StaticInitialization {   
  38.        
  39.     public static void main(String[] args) {   
  40.         System.out.println("Creating new Cupboard() in main");   
  41.         new Cupboard();   
  42.         System.out.println("Creating new Cupboard() in main");   
  43.         new Cupboard();   
  44.         t2.f2(1);   
  45.         t3.f3(1);   
  46.     }   
  47.     static Table t2=new Table();   
  48.     static Cupboard t3=new Cupboard();   
  49.        
  50. }  

 

执行结果:

  1. Bowl :1  
  2. Bowl :2  
  3. Table()   
  4. f :1  
  5. Bowl :4  
  6. Bowl :5  
  7. Bowl :3  
  8. Cupboard()   
  9. f :2  
  10. Creating new Cupboard() in main   
  11. Bowl :3  
  12. Cupboard()   
  13. f :2  
  14. Creating new Cupboard() in main   
  15. Bowl :3  
  16. Cupboard()   
  17. f :2  
  18. f2 :1  
  19. f3 :1  
分享到:
评论

相关推荐

    关于Java静态成员变量和静态初始化块等的初始化顺序的详细介绍

    详细介绍了Java的静态成员变量、静态数据块、非静态成员变量和非静态成员变量等初始化顺序

    Java中对象初始化顺序的详细介绍

    在Java中,类装载器把一个类装入Java虚拟机中,要经过三个步骤来完成:装载、链接和初始化,网上关于Java中对象初始化顺序的文章很多,这篇文章我们将详细介绍Java中对象初始化顺序。有需要的可以参考学习。

    简单了解Java类成员初始化顺序

    主要介绍了简单了解Java类成员初始化顺序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    Java类初始化顺序

    Object会开辟一块内存,初始化所有数据为0、null、false等默认值 执行本类中的成员代码块。所有代码块是从上往下顺序执行的,所以代码块里面使用到的变量如果在块下面初始化会有问题 执行构造方法中内容。 所以...

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

     ※在所有类成员初始化完成之后,才调用本类的构造方法创建对象。  构造方法的作用就是初始化。  (2) 静态对象的初始化  程序中主类的静态变量会在main方法执行前初始化。  不仅第一次创建对象时,类中的...

    Thinking in java4(中文高清版)-java的'圣经'

    5.4 this关键字 5.4.1 在构造器中调用构造器 5.4.2 static的含义 5.5 清理:终结处理和垃圾回收 5.5.1 finalize()的用途何在 5.5.2 你必须实施清理 5.5.3 终结条件 5.5.4 垃圾回收器如何工作 5.6 成员初始化 ...

    JAVA基础知识精华总结 收藏

    ※在所有类成员初始化完成之后,才调用本类的构造方法创建对象。 构造方法的作用就是初始化。 (2) 静态对象的初始化 程序中主类的静态变量会在main方法执行前初始化。 不仅第一次创建对象时,类中的所有静态变量...

    Java开发技术大全(500个源代码).

    errorInit.java 演示变量初始化错误的程序 integerExample.java 演示各种整型变量的使用 isPrime.java 判断素数 leapYearByIf.java 用if语句判断闰年 leapYearByLogical.java 用逻辑表达式判断闰年 lowToUpper...

    Java 基础核心总结 +经典算法大全.rar

    类的初始化 成员初始化 构造器初始化初始化顺序 数组初始化 对象的销毁 对象作用域 this 和 super 访问控制权限继承 多态组合代理 向上转型static final 接口和抽象类接口 抽象类异常 认 识 Exception 什么是 ...

    JAVA复习资料

    12、在Java中有一种叫作__构造方法__的特殊方法,我们在程序中用它来对类的对象成员进行初始化。 13、面向对象技术具有_封装性___、_继承性___、_抽象性___、多态性等特性。 14、Java中所有类都是类 _Object___...

    Thinking in Java简体中文(全)

    4.4 成员初始化 4.4.1 规定初始化 4.4.2 构建器初始化 4.5 数组初始化 4.5.1 多维数组 4.6 总结 4.7 练习 第5章 隐藏实施过程 5.1 包:库单元 5.1.1 创建独一无二的包名 5.1.2 自定义工具库 5.1.3 利用导入改变行为...

    java联想(中文)

    4.4 成员初始化 4.4.1 规定初始化 4.4.2 构建器初始化 4.5 数组初始化 4.5.1 多维数组 4.6 总结 4.7 练习 第5章 隐藏实施过程 5.1 包:库单元 5.1.1 创建独一无二的包名 5.1.2 自定义工具库 5.1.3 利用导入改变行为...

    Thinking in Java 中文第四版+习题答案

    4.4 成员初始化 4.4.1 规定初始化 4.4.2 构建器初始化 4.5 数组初始化 4.5.1 多维数组 4.6 总结 4.7 练习 第5章 隐藏实施过程 5.1 包:库单元 5.1.1 创建独一无二的包名 5.1.2 自定义工具库 5.1.3 利用导入改变行为 ...

    Thinking in java(中文)

    收尾和垃圾收集 4.3.1 finalize()用途何在 4.3.2 必须执行清除 4.4 成员初始化 4.4.1 规定初始化 4.4.2 构建器初始化 4.5 数组初始化 4.5.1 多维数组 4.6 总结 4.7 练习 <br>第5章 ...

    java经典选择题题库及答案.docx

    init方法是Applet的初始化方法,start方法是Applet的启动方法,stop方法是Applet的停止方法,destroy方法是Applet的销毁方法。 Java语言的集合框架是指Java语言提供的一组用于存储和处理数据的类和接口。集合框架...

    java深入解析

    193 话题29 按部就班——初始化顺序与向前引用 206 第5章 类与接口 220 话题30 相辅相成——基本数据类型与包装类 220 话题31 分门别类——数组的阐述 232 话题32 规矩方圆——定义规范的接口类型 242 话题33 彻里至...

    java 编程入门思考

    4.4 成员初始化 4.4.1 规定初始化 4.4.2 构建器初始化 4.5 数组初始化 4.5.1 多维数组 4.6 总结 4.7 练习 第5章 隐藏实施过程 5.1 包:库单元 5.1.1 创建独一无二的包名 5.1.2 自定义工具库 5.1.3 利用导入改变行为...

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

    在类体中定义的数据、变量和方法称为类的成员, 或称为实例变量和实例方法。 (7) 例如: 下例定义了一个 Point 类 ,并且声明了它的两个变量 x、y 坐标 ,同时实现 init()方法 对 x、y 赋初值 。 class Ponit { int...

    疯狂JAVA讲义

    5.3.2 成员变量的初始化和内存中的运行机制 128 5.3.3 局部变量的初始化和内存中的运行机制 130 5.3.4 变量的使用规则 130 5.4 隐藏和封装 132 5.4.1 理解封装 132 5.4.2 使用访问控制符 132 5.4.3 package和...

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

    3.4 小结:基本数据类型—— Java中一切数据和运算的基础 63 3.5 习题 65 第4章 Java中的程序执行流程 67 教学视频:1小时57分钟 4.1 顺序执行 67 4.2 使用if-else让程序懂得判断 68 4.2.1 if语句 68 4.2.2 ...

Global site tag (gtag.js) - Google Analytics