成员变量(字段)初始化顺序

在一个类里初始化的顺序是由成员变量在类里面的定义的顺序来决定的。即使成员变量大量散布于类的各个方法定义的中间,那些成员变量仍会在调用任何方法之前得以初始化,甚至在构造函数调用之前。

若数据是静态的(static),那么同样的事情就会发生;如果它属于一个基本类型(主类型),而且未对其初始化,就会自动获得自己的标准基本类型初始值;如果它是指向一个对象的句柄,那么除非新建一个对象,并将句柄同它连接起来,否则就会得到一个空值(NULL)。

static 初始化只有在必要的时候才会进行。如果不创建一个Table 对象,而且永远都不引用Table.b1 或Table.b2,那么static Bowl b1 和b2 永远都不会创建

对象创建过程

  1. 类型为Dog的一个对象首次创建时,或者Dog类的static字段或static方法首次访问时,Java解释器必须找到Dog.class(在事先设定好的路径里面搜索);
  2. 找到Dog.class 后(它会创建一个Class 对象),它的所有static 初始化模块都会运行。因此,static 初始化仅发生一次——在Class 对象首次载入的时候;

  3. 创建一个new Dog()时,Dog 对象的构建进程首先会在内存堆(Heap)里为一个Dog 对象分配足够多的存储空间;

  4. 这种存储空间会清为零,将Dog 中的所有基本类型(Primitive)设为它们的默认值(0用于数字,以及boolean 和char 的等价设定);

  5. 进行成员字段定义时发生的所有初始化都会执行;

  6. 执行构造函数。

 static构建从句

class Spoon {static int i;static {i = 47;}// . . .

尽管看起来象个方法,但它实际只是一个static关键字,后面跟随一个方法主体。与其他static初始化一样,这段代码仅执行一次——首次生成那个类的一个对象时,或者首次访问属于那个类的一个static 成员时(即便从未生成过那个类的对象)

Java的对象初始化过程相关推荐

  1. Java 父类子类的对象初始化过程

    转载自 Java 父类子类的对象初始化过程 摘要: Java基本的对象初始化过程,子类的初始化,以及涉及到父类和子类的转化时可能引起混乱的情况. 1. 基本初始化过程: 对于一个简单类的初始化过程是: ...

  2. java实例化对象的过程

    学习JAVA这门面向对象的语言,实质就是不断地创建类,并把类实例化为对象并调用方法.对于初学JAVA的人总搞清楚对象是如何实例化的,假如类之间存在继承关系,那就更糊涂了.下面我们通过两个例题来说明对象 ...

  3. java new 删除吗,java泛型对象初始化-java泛型对象会实例化吗T t=new T()

    java泛型对象初始化--java泛型对象能实例化吗T t=new T() java中没法得到泛型参数化类型,因为在编译期没法确定泛型参数化类型,也就找不到对应的类字节码文件,自然就不行了 泛型反射的 ...

  4. 【JAVA基础篇】对象初始化过程

    我们都知道,创建对象是由 new关键字调用构造方法 返回类实例(实际上还可以通过反射来创建实例). 例如 : Person jack = new Person(); 这句话到底做了什么事情呢 ? 其实 ...

  5. java 对象初始化过程_Java——对象初始化顺序使用详解

    一. 代码块的概念 在探究对象初始化顺序之前,我们先通过代码来了解一下代码块的概念. class Test{ public static String str1; //静态字段 public Stri ...

  6. java 授权对象初始化失败

    问题描述 tomcat服务访问时提示错误: 授权对象初始化失败 java.security.InvalidKeyException: Illegal key size or default param ...

  7. 【Java基础】Java中类的初始化过程:(静态成员变量,静态代码块,普通成员变量,代码块初始化顺序)

    初始化过程是这样的: 1.首先,初始化父类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化: 2.然后,初始化子类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化: 3.其次,初始 ...

  8. Java 对象初始化过程

    例子里总共测试了静态代码块,普通代码块,静态成员变量,普通成员 变量,构造器.分别在基类和派生类里各有一套. public class ClassLog {private static final S ...

  9. java 继承对象 初始化_java中具有继承关系的类及其对象初始化顺序

    先说结论 对于具有继承关系的类,它们的类和对象构造顺序为:父类的类构造器() -> 子类的类构造器() -> 父类成员变量的赋值和实例代码块 -> 父类的构造函数 -> 子类成 ...

最新文章

  1. python保持登录状态_“保持登录状态”-最佳方法
  2. 一键 linux桌面安装vnc,Ubuntu 16.04 LTS一键安装VNC
  3. 怎么把一个控件放到tab页面上去?_C/C++应用无障碍化如何支持Tab键浏览
  4. Python面试题之阅读下面的代码,写出A0,A1至An的最终值
  5. 【Mac】mac 安装Axure RP 8 点不开 就一直跳-后闪退-报错Expected an Int64 but got a System.UInt64
  6. 【HTML+CSS网页设计与布局 从入门到精通】第14章-float/position/display属性
  7. java 最大线程数_JVM可生产的最大线程数 Thread 数量
  8. 2440 linux文件写,添加yaffs2文件系统 - Linux2.6.39在S3C2440上的移植_Linux编程_Linux公社-Linux系统门户网站...
  9. POI中sheet.getRow方法返回值NullPointException
  10. ML/DL-复习笔记【六】- 理解反向传播算法
  11. Error:Failed to open zip file. Re-download dependencies and sync project
  12. 批量制作通知书会议邀请函等模板式文本并快速批量发送邮件
  13. php居中显示代码,css居中代码是什么
  14. 工商银行近20年实时大数据平台建设历程
  15. word 电子签名去背景方法
  16. eclipse4.6安装tomcate插件 Eclipse4.6(neno)配置Tomcat插件的两种方式
  17. dubbo之telnet使用
  18. 【flutter】type ‘Null‘ is not a subtype of type ‘bool‘
  19. 天猫魔盒挂载ext4移动硬盘
  20. jtable如何从表格中定位_ja中怎样将一个JTable表中的指定行添加到数据库

热门文章

  1. 螺旋千斤顶设计大作业_9大盾构施工常见问题,教你各个击破
  2. 去雾综述_【综述】图像去雾的前世今生
  3. 基本数据结构篇(三万字总结)
  4. 【洞见】关于PMP个人认识和理解
  5. 【企业管理】价值创造的两个轮子
  6. 信息系统项目管理师优秀论文:沟通与干系人管理
  7. Java基础 ArrayList和LinkedList的区别和实现原理
  8. 信息系统项目管理师-信息化与信息系统考点笔记(下)
  9. SpringBoot中通过ConfigurationProperties注解的方式读取application.yml中配置的属性值
  10. SpringCloud-使用熔断器仪表盘监控熔断