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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵亚威 中级黑马   /  2013-3-17 13:56  /  1150 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 赵亚威 于 2013-3-17 16:58 编辑

静态代码块,构造代码块,构造函数,静态成员变量,成员变量的初始化顺序

5 个回复

倒序浏览
静态代码块与变量优先于对象,同步于类,只要加载类,就一定得加载,详情看列子吧,http://bbs.itheima.com/thread-41502-1-1.html隔壁帖就有
欢迎各路大侠来指正指导
回复 使用道具 举报
这个问题毕老师讲的很详细了呢。。。你哪个地方不清楚呢
回复 使用道具 举报
http://bbs.itheima.com/forum.php ... mp;page=1#pid252658
这个问题和你问的相似,应该可以给你提供思路!
首先你要理解静态的都是随着类的加载而加载,所以他优先于对象存在,所以非静态不能调用静态;
因为静态的生命周期也是最长的,所以成员变量一般不定义成静态,比较消耗内存资源!

静态代码块(注意:静态代码快它只执行一次) 优先于 构造代码块 优先于 构造函数

你可以自己创建一个类加入你这些代码块,自己验证一下你就全明白了!

遇到问题首先自己先去试试,自然你就能得到你所需要的答案,而且记忆很深刻!
回复 使用道具 举报
对象初始化过程:Person p = new Person(“zhangsan”,20);
1.        因为new用到了Person.class所以会先找到person .class文件并加载到内存中.
2.        执行该类中的static代码块,给Person.class类进行初始化
3.        在堆内存中开辟空间,分配内存地址
4.        在堆内存中建立对象的特有属性.并进行默认初始化.
5.        对属性进行显示初始化
6.        对对象进行构造代码块初始化
7.        对对象进行对应的构造函数初始化
8.        将内存的地址赋给栈内存中的p变量
回复 使用道具 举报
懂了 只是有一点小疑惑 现在懂了 我主要是纠结变量和构造函数上面 呵呵
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马