A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 程宁宁 中级黑马   /  2013-3-27 00:38  /  1605 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 破落 于 2013-3-27 11:01 编辑

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

点评

如果你的问题已经得到解决,请及时将主题改为[已解决],如果还有问题请继续追问,谢谢!  发表于 2013-3-27 10:51

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

5 个回复

倒序浏览
构造函数就是给对象进行初始化的,没建立一个对象,相应的构造函数就会执行一次,构造函数里的操作就是初始化成员变量的
回复 使用道具 举报
创建对象的时候是先装载类,然后初始化类的属性然后再调用构造方法。
回复 使用道具 举报
创建对象时,是先初始化成员变量,还是先执行构造函数里面的操作啊?求解

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

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


因为现有类,后有对象,所以我们先加载成员变量,后有对象,有对象才能创建对象,才能加载构造函数;

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

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

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马