黑马程序员技术交流社区
标题:
初始化顺序
[打印本页]
作者:
赵亚威
时间:
2013-3-17 13:56
标题:
初始化顺序
本帖最后由 赵亚威 于 2013-3-17 16:58 编辑
静态代码块,构造代码块,构造函数,静态成员变量,成员变量的初始化顺序
作者:
姓名长度不符
时间:
2013-3-17 13:59
静态代码块与变量优先于对象,同步于类,只要加载类,就一定得加载,详情看列子吧,
http://bbs.itheima.com/thread-41502-1-1.html
隔壁帖就有
欢迎各路大侠来指正指导
作者:
打工人
时间:
2013-3-17 15:21
这个问题毕老师讲的很详细了呢。。。你哪个地方不清楚呢
作者:
罗威
时间:
2013-3-17 15:58
http://bbs.itheima.com/forum.php ... mp;page=1#pid252658
这个问题和你问的相似,应该可以给你提供思路!
首先你要理解静态的都是随着类的加载而加载,所以他优先于对象存在,所以非静态不能调用静态;
因为静态的生命周期也是最长的,所以成员变量一般不定义成静态,比较消耗内存资源!
静态代码块(注意:静态代码快它只执行一次) 优先于 构造代码块 优先于 构造函数
你可以自己创建一个类加入你这些代码块,自己验证一下你就全明白了!
遇到问题首先自己先去试试,自然你就能得到你所需要的答案,而且记忆很深刻!
作者:
谭辉
时间:
2013-3-17 15:58
对象初始化过程:Person p = new Person(“zhangsan”,20);
1. 因为new用到了Person.class所以会先找到person .class文件并加载到内存中.
2. 执行该类中的static代码块,给Person.class类进行初始化
3. 在堆内存中开辟空间,分配内存地址
4. 在堆内存中建立对象的特有属性.并进行默认初始化.
5. 对属性进行显示初始化
6. 对对象进行构造代码块初始化
7. 对对象进行对应的构造函数初始化
8. 将内存的地址赋给栈内存中的p变量
作者:
赵亚威
时间:
2013-3-17 16:58
懂了 只是有一点小疑惑 现在懂了 我主要是纠结变量和构造函数上面 呵呵
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2