黑马程序员技术交流社区
标题:
请教问题
[打印本页]
作者:
郑强强
时间:
2012-4-8 22:13
标题:
请教问题
为什么构造函数的初始化优于构造代码段的初始化,而构造代码段的执行顺序优于构造函数的呢??
作者:
高铭
时间:
2012-4-8 22:18
LZ说的是构造代码块吗? 构造代码段 刚百度了一下 感觉挺深奥的
构造代码块还可以
构造代码块作用是给对象初始化。
对象一建立就执行,而且优先于构造函数执行
构造代码块中定义的是不同对象共性的初始化内容
静态代码块
随着类的加载而执行,只执行一次。并优先于主函数用于给类进行初始化。
作者:
胡元
时间:
2012-4-8 22:31
因为构造代码块是给所有的对象初始化,所以有可能被构造函数覆盖掉,所以构造
函数的初始化优于构造代码段的初始化。
而构造代码块是共性内容,所以执行顺序上比构造函数早,所以顺序上
优于构造函数!
作者:
newlaw2013
时间:
2012-4-8 23:04
对象的初始化过程:bxd day06 07节
Person p = new Person();
这一句话都做了什么事情?
1,因为new用到了Person.class 。所以会先找到Person.class文件并加载到内存中。
2,执行该类中的static代码块,如果有的话。给Person.class类进行初始化。
3,在堆内存中开辟空间,分配内存地址。
4,在堆内存中建立对象的特有属性。并进行默认初始化。
5,对属性进行显式初始化。
6,对对象进行构造代码块初始化。
7,对对象进行对应的构造函数初始化。
8,将内存地址赋值给栈内存中的p变量。
“构造函数的初始化优于构造代码段的初始化?”这样理解应该有问题吧?
对于非继承的初始化过程,顺序是:静态变量-->静态初始化块-->变量-->初始化块-->构造器
作者:
程旦
时间:
2012-4-8 23:45
楼主这么说吧,构造函数可以覆盖构造代码块里面的数据,这样谁先执行,谁优先谁不就清楚了吗
作者:
pray
时间:
2014-4-26 06:40
烦!(此心情虽然就一个字,却深刻表达了我的感受,可谓言简意赅,一字千金,足可表达我深厚的文学功底和扎实的写作技巧。实在是佩服自己!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2