成员变量初始化顺序

原创 2012年03月28日 21:13:29

一.类加载时,变量的初始化顺序:
 1.首先,给静态成员变量分配内存空间,进行默认初始化
  (整型为0,浮点型为0.0,布尔型为false,字符型为'\u0000',引用型为null)
  
 2.其次,执行静态成员变量的初始化操作
  --静态成员的初始化,包括两种: 声明时直接初始化和静态代码块
  --执行顺序为:在代码中的出现的顺序(声明的顺序)
  
 注意: 1和2的动作,在类加载时只执行一次!!!!!!!

 

 如果创建了对象,则在堆中给类的实例分配内存空间,
 3.首先,对实例变量,进行默认初始化
  (整型为0,浮点型为0.0,布尔型为false,字符型为'\u0000',引用型为null)
  
 4.其次,执行实例变量的初始化操作
  --实例变量的初始化,使用前2种初始化方式: 声明时直接初始化和代码块
  --执行顺序为:在代码中的出现的顺序(声明的顺序)
 
 5.最后,执行构造函数(实例变量的第3中初始化方式)
 
二.继承时,变量的初始化顺序:
 1.当类第一次使用时,JVM就会加载该类,如果该类存在父类,那么就先加载父类,这是一个递归过程,直到Object为止.
 在类加载中,首先进行静态成员变量按照默认值进行初始化,
 然后按照在类中声明的顺序执行静态代码块和静态变量的显示初始化.
 这个过程从父类到子类,并且只会执行一次!!!
 
 2.当父类与子类的静态代码初始化完成后,如果创建了类的对象,
 在初始化子类前,会先对其父类的实例变量进行默认初始化,
 然后按照在类中的声明顺序来执行代码块与实例变量的显示初始化,
 最后调用父类的构造函数,这也是一个递归过程,直到Object类为止.
 (这个过程在每次创建对象时,都会执行!!!)

C++成员变量的初始化顺序问题

问题来源: 由于面试题中,考官出了一道简单的程序输出结果值的题:如下, class A { private: int n1; int n2; public: A():n2(0),n1...
  • zhaojinjia
  • zhaojinjia
  • 2013年04月11日 09:29
  • 12040

C++成员变量初始化顺序

1、成员变量在使用初始化列表初始化时,与构造函数中初始化成员列表的顺序无关,只与定义成员变量的顺序有关。因为成员变量的初始化次序是根据变量在内存中次序有关,而内存中的排列顺序早在编译期就根据变量的定义...
  • MM_dou
  • MM_dou
  • 2017年01月15日 14:47
  • 720

Java中构造代码块和成员变量初始化的顺序关系

作者:小开 链接:https://www.zhihu.com/question/20616186/answer/15646132 来源:知乎 著作权归作者所有,转载请联系作者获得授权。 类...
  • zhuhai__yizhi
  • zhuhai__yizhi
  • 2016年07月21日 10:27
  • 1768

构造函数中成员变量初始化顺序问题

在定义类的对象的时候,如果类中有定义构造函数,则调用用户自己定义的构造函数,没有则调用默认构造函数。 如果用户定义的构造函数是以参数列表的形式初始化成员变量,则成员变量的初始化顺序是按照成员变量的声...
  • yzl20092856
  • yzl20092856
  • 2015年09月16日 09:29
  • 777

C#中成员初始化顺序

一、成员初始化整体顺序
  • huangcailian
  • huangcailian
  • 2014年05月16日 11:21
  • 801

成员变量初始化顺序

一.类加载时,变量的初始化顺序:  1.首先,给静态成员变量分配内存空间,进行默认初始化   (整型为0,浮点型为0.0,布尔型为false,字符型为'\u0000',引用型为null)    ...
  • monghuan
  • monghuan
  • 2012年03月28日 21:13
  • 3399

Java中成员变量的初始化顺序浅析

在Java中,所有的变量在使用之前都得到恰当的初始化,对于方法的局部变量,如果在使用前没有初始化,编译时系统会提示错误而无法继续编译;对于成员变量,系统会提供默认值,对于基本类型,默认置为0,引用类型...
  • abc13526222160
  • abc13526222160
  • 2016年10月06日 15:37
  • 594

在初始化列表中,成员变量的初始化顺序是其在类中声明顺序,而非列表中的顺序。

关于最近看到的关于类的初始化的问题,我觉得有必要在这里讲一下,可能平时不注意的话,就有可能犯错。 看下面的代码:    #include "stdafx.h" #include using ...
  • heathyhuhu
  • heathyhuhu
  • 2012年11月14日 12:23
  • 1854

成员变量的初始化顺序

一.类加载时,变量的初始化顺序: 1.首先,给静态成员变量分配内存空间,进行默认初始化 (整型为0,浮点型为0.0,布尔型为false,字符型为'\u0000',引用型为null) 2.其次...
  • Stand1210
  • Stand1210
  • 2016年08月26日 20:57
  • 882

Java 代码块、成员变量初始化、构造函数初始化顺序

一、对于实例变量 实例变量初始化过程分析 初始实例变量的有: ① 实例变量定义时初始化、 ② 非静态代码块初始化、 ③ 构造函数实例变量初始化 package cn.daywan.test; ...
  • Only_Wan
  • Only_Wan
  • 2016年11月23日 16:51
  • 1407
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:成员变量初始化顺序
举报原因:
原因补充:

(最多只允许输入30个字)