黑马程序员技术交流社区

标题: 创建对象过程中的问题i [打印本页]

作者: 程宁宁    时间: 2013-3-27 00:38
标题: 创建对象过程中的问题i
本帖最后由 破落 于 2013-3-27 11:01 编辑

创建对象时,是先初始化成员变量,还是先执行构造函数里面的操作啊?求解

作者: fclovejyy    时间: 2013-3-27 01:01
构造函数就是给对象进行初始化的,没建立一个对象,相应的构造函数就会执行一次,构造函数里的操作就是初始化成员变量的
作者: 蔡陶军    时间: 2013-3-27 02:51
创建对象的时候是先装载类,然后初始化类的属性然后再调用构造方法。
作者: 崔宝东    时间: 2013-3-27 09:22
创建对象时,是先初始化成员变量,还是先执行构造函数里面的操作啊?求解

创建对象的时候,我们肯定是要执行构造函数,已经构造函数里面的额内容的;

至于成员变量时在类加载的时候,初始化成员变量的;


因为现有类,后有对象,所以我们先加载成员变量,后有对象,有对象才能创建对象,才能加载构造函数;
作者: 寇弘禄    时间: 2013-3-27 10:26
应该是先在堆内存中为对象开辟空间,然后将非静态成员变量加载进去并进行默认初始化,然后在通过构造函数进行初始化。
作者: 123    时间: 2013-3-27 10:28
先初始化成员变量,后执行构造器。
创建对象的过程:
类加载过程:给静态变量分配内存。
类初始化阶段:执行静态初始化块(如果有)或者是静态变量的赋值语句,这两者是按照编程的顺序执行的,谁在前面就先执行谁,在后面的后执行。类初始化完成后才可以使用这个类。
上面介绍的是类加载阶段,下面是创建对象的过程:
创建一个对象时,系统先为该对象的所有实例变量分配内存,接着程序开始对这些实例变量进行初始化,初始化的顺序是:先执行初始化块或声明实例变量时指定的初始值(两者按照程序的先后顺序执行),执行构造器里指定的初始值。
简单的概括是:先执行静态初始化块,后执行普通初始化块,然后执行构造器。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2